0. 数组操作
0.0 push()
函数
推入到数组末尾
1 2
| var myArray = [["John", 23], ["cat", 2]]; myArray.push(["dog",3]);
|
myArray=[["John", 23], ["cat", 2], ["dog", 3]]
0.1 pop()
函数
抛出数组末尾值并存储起来
1 2
| var myArray = [["John", 23], ["cat", 2]]; var removedFromMyArray = myArray.pop();
|
myArray=[ [ 'John', 23 ] ]
removedFromMyArray=['cat',2]
0.2 shift
函数
抛出数组开头的值并存储起来
1 2
| var myArray = [["John", 23], ["dog", 3]]; var removedFromMyArray = myArray.shift();
|
myArray=[ [ 'John', 23 ] ]
removedFromMyArray=['dog', 3]
0.3 unshift()
函数
移入一个元素到数组头部
1 2
| var myArray = [["John", 23], ["dog", 3]]; myArray.unshift(["Paul",35]);
|
myArray=[ [ 'Paul', 35 ], [ 'John', 23 ], [ 'dog', 3 ] ]
0.4 map()
函数
对数组中的元素进行相同的操作
1 2
| var arr = [1,4,9,16]; const map1 = arr.map(x=>x*2);
|
map1=[2,8,18,32]
0.5 filter()
函数
对数组中的元素进行筛选
1 2
| var arr=[1,4,9,16]; const filter1 = arr.filter(x=>x>8);
|
filter1=[9,16]
0.6 reduce()
函数
对数组元素进行运算
1 2
| var arr=[1,4,9,16]; const reduce1 = arr.reduce((x,y)=>x+y);
|
reduce1=30
1 2 3
| arr.reduce(function(prev,cur,index,arr){ ... }, init);
|
或者
1 2 3
| arr.reduce(function(prev,cur,index,arr){ ... },);
|
- arr 表示将要原数组;
- prev 表示上一次调用回调时的返回值,或者初始值 init;
- cur 表示当前正在处理的数组元素;
- index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
- init 表示初始值。
常用的参数只有两个:prev 和 cur。
数组求和,求乘积
1 2 3 4 5
| var arr = [1, 2, 3, 4]; var sum = arr.reduce((x,y)=>x+y) var mul = arr.reduce((x,y)=>x*y) console.log( sum ); console.log( mul );
|
计算数组中每个元素出现的次数
1 2 3 4 5 6 7 8 9 10 11
| let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
let nameNum = names.reduce((pre,cur)=>{ if(cur in pre){ pre[cur]++ }else{ pre[cur] = 1 } return pre },{}) console.log(nameNum);
|
数组去重
1 2 3 4 5 6 7 8 9
| let arr = [1,2,3,4,4,1] let newArr = arr.reduce((pre,cur)=>{ if(!pre.includes(cur)){ return pre.concat(cur) }else{ return pre } },[]) console.log(newArr);
|
将二维数组转化为一维
1 2 3 4 5
| let arr = [[0, 1], [2, 3], [4, 5]] let newArr = arr.reduce((pre,cur)=>{ return pre.concat(cur) },[]) console.log(newArr);
|
将多维数组转化为一维
1 2 3 4 5
| let arr = [[0, 1], [2, 3], [4,[5,6,7]]] const newArr = function(arr){ return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[]) } console.log(newArr(arr));
|
对象里的属性求和
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var result = [ { subject: 'math', score: 10 }, { subject: 'chinese', score: 20 }, { subject: 'english', score: 30 } ];
var sum = result.reduce(function(prev, cur) { return cur.score + prev; }, 0); console.log(sum)
|