这里写自定义目录标题
迭代的概念
迭代:根据迭代公式多次运算,且每一次运算的结果将作为下一次运算的初始值。
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)增添和删除操作的本质就是按照顺序挪动元素。