数组的迭代、数组遍历和线性表

本文介绍了迭代的概念,包括不书写initValue和书写initValue的迭代运算,以及从right开始的迭代运算。接着详细讲解了数组的遍历方法,如for循环和for-in。此外,还探讨了线性表的查找、插入、删除等操作,强调了线性表操作基于查找和元素挪动的本质。
摘要由CSDN通过智能技术生成

迭代的概念

迭代:根据迭代公式多次运算,且每一次运算的结果将作为下一次运算的初始值。
reduce(function(acc,cur,index,array){ return 迭代公式; },initValue),
让数组元素从左向右迭代。
reduceRight(function(acc,cur,index,array){ return 迭代公式; },initValue),
让数组元素从右向左迭代。

不书写initValue的迭代运算

// 不书写initvalue的迭代运算

var sun=[1,2,3,4,5,6,7,8,9];
var open=sun.reduce(function(acc,cur,index,array){
 	console.log(acc,cur);
 	return acc+cur;

})
console.log(open)

//acc:在不书写initvalue情况下代表索引值0的数组元素
//cur:代表的是索引值为一的数组元素
//同时在迭代运算时不会影响原数组
// 运算方法两个元素相加的值会参与到下次运算当中

书写initvalue的迭代运算

var sun=[1,2,3,4,5,6,7,8,9];
var open=sun.reduce(function(acc,cur,index,array){
 	console.log(acc,cur);
 	return acc+cur;
},150)
console.log(open)

// 150:为initvalue值
//acc:在书写initvalue情况下的初始值为initvalue
//cur:代表的是索引值为0的数组元素
//同时在迭代运算时不会影响原数组
// 运算方法两个元素相加的值会参与到下次运算当中

从right开始运算

var sun=[1,2,3,4,5,6,7,8,9];
var open=sun.reduceRight(function(acc,cur,index,array){
	console.log(acc,cur);
	return acc+cur;
})
console.log(open);

此代码改变的只有从右向左开始计算

数组的遍历方法

利用for循环对数组进行遍历

var sun=[1,2,3,4,5,6,7,8,9];
for(i=0;i<sun.length;i++){
	console.log(sun[i])
}

利用for-in对数组进行遍历

var sun=[1,2,3,4,5,6,7,8,9];
for(var index in sun){
	console.log(sun[index]);
}

// for-in中的循环变量是数组的索引值。
// for-in中表示索引值的循环变量是字符型数据。

线性表

线性表:任何一个元素都可以明确的知道自身前一个元素和后一个元素。
线性表的长度:线性表中数据元素的个数。

线性表的查找

// 使用数组的方法:利用索引值来查找
// line.indexof(40);line为定义数组名

var line=[10,11,12,13,14,15,16,17,18,19];
var open=12;
for(var i=0;i<=line.length;i++){
	if(line[i]===open){
		index=i;
		break;
	}
}
console.log(index);

// 对代码的理解:
// 建立一个线性表在线性表中寻找12的元素
// 设置一个变量等于要寻找的元素(12)
// 利用for循环进行寻找
// 首先i得初值等于索引值0,以为从索引值为零的元素开始
// 查找,终值设定为i小于等于line的元素个数;
// 每进行一次循环i的值就加1如果i得值等于open时执行
// 索引值等于i的语句,并且结束循环输出元素12的位置

在线性表12元素后面添加新元素"w"

var news="w";
for(var i=line.length-1;i>=index;i--){
	line[i+1]=line[i];
}
line[index+1]=news;
console.log(line);

// 定义变量news为添加的元素为"w"
// 建立for循环i等于line的元素个数减一
// 循环终值为i的值大于等于在元素前添加的索引值
// 每循环一次i的值减一
// 然后吧i所代表的索引值元素赋予i+1的索引值
// 相当于从元素索引值index后面的一个元素开始
// 到line的最后一个元素都向后移动一位,将index
// 后面一个元素的位置空出来将要添加的元素添加进
// index后面一个元素的位置。

在线性表12元素前面添加新元素"w"

var news="w";
for(var i=line.length-1;i>=index;i--){
	line[i+1]=line[i];
}
line[index]=news;
console.log(line);

// 定义变量news为添加的元素为"w"
// 建立for循环i等于line的元素个数减一
// 循环终值为i的值大于等于在元素前添加的索引值
// 每循环一次i的值减一
// 然后吧i所代表的索引值元素赋予i+1的索引值
// 相当于从元素索引值index到line的最后一个元素都
// 向后移动一位,将index现在的位置空出来
// 将要添加的元素添加进index的位置。

删除线性表总的元素

var sup=line[index];
for(i=index+1;i<line.length;i++){
	line[i-1]=line[i]
}
line.length--;
console.log(line);
console.log(sup);

// 由于删除数组元素会对数组本身产生影响
// 所以拥有返回值,变量就是删除的数组元素
// 建立for循环的意义是将i被赋予的索引值所代表的
// 元素覆盖index实现将数组元素的前移,将删除元素
// 的目的达成。由于我们将数组元素进行了删除。
// 却没有改变数组本身拥有的元素个数,还需要将数组
// 的元素个数进行改变将数组元素减一
// 增加元素数组可以自行修正,但删除不可以。

操作线性表的总结

(1)所有的线性表操作都是基于查找来实现的。
(2)增添和删除操作的本质就是按照顺序挪动元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值