数组
var a = [1, 2, 3, 5, 8, 13, 21]
改变原数组的方法
push(value) | 数组末尾添加一个或多个元素,并返回新的数组长度 | 推入,a.push(34) | 简单,不演示了 |
pop() | 删除最后一个元素,并返回该元素的值 | 弹出,a.pop() | 简单,不演示了 |
unshift(value) | 数组开头添加一个或多个元素,并返回新的数组长度 | unshift数组头部插入,a.unshift(-1) | 简单,不演示了 |
shift() | 删除数组第一个元素,并返回该元素的值。 | shift改变,数组头部删除,a.shift() | 简单,不演示了 |
reverse() | 将数组的元素顺序颠倒,修改元素组。 | 反转,a.reverse() | a.reverse() //[21, 13, 8, 5, 3, 2, 1] |
sort(f()) | 对数组的元素进行排序 | 排序,a.sort(function(a,b){return b-a;}) | |
splice(start,deleteCount,item1,item2...) | 在任意位置添加、删除或替换数组的元素。 | 粘接 | 了解即可 |
forEach(f(value,index,arr)) | 遍历数组中每个元素执行回调,无返回值. | 遍历,无返回值,三参数,数组元素值,元素索引可选,原数组可选 | function add1(value,index,arr){ console.log(value+"|"+index+"|"+arr); arr[index]=value+1; console.log(a); } a.forEach(add1) // [2, 3, 4, 6, 9, 14, 22] |
map(f(value,index,arr)) | 创建新数组,每个元素结果覆盖原值。返回值是新数组。 | 映射,同forEach类似,区别是改变原数组并返回。 | function multi(value,index,arr){ console.log(value+"|"+index+"|"+arr); arr[index]=value*2; console.log(a); } a.map(multi); //[2, 4, 6, 10, 16, 26, 42] |
filter(f(item,i,arr)) | 创建新数组,符合要求返回。 | 过滤,不修改原数组 | function lv(item,i,arr){ console.log("数组项:"+item+",索引:"+i+",当前数组:"+arr); //筛选出偶数来 if(item%2==0){ return item; } } a.filter(lv); //[2, 8] |
reduce(f(acc,curVal,i,arr),initVal) | 对数组进行积累操作,升序执行,返回总值 | 减少,f(累计值,当前值,索引,数组),初始值 | function sum(a,b,i,arr){ console.log("初始值:"+a+",当前项:"+b+",索引:"+i+",当前数组:"+arr); //将中间累积值保存在原数组acc属性中 arr.acc.push(a+b); return a+b; } a.reduce(sum);//53 a.acc//[3, 6, 11, 19, 32, 53] |
reduceRight(f()) | 降序执行,返回总值 | 右侧减少, | 同上 a.reduceRight(sum); a.acc//[34, 42, 47, 50, 52, 53] |