1.reduce 返回的是归并的结果,此方法不会更改现有数组;
1var a = [1, 2, 3]
2
3console.log(a.reduce((a, b) =>a + b)) // 6 ;箭头函数,返回语句只有一句,括号必须省略
4
5console.log(a) // [1, 2, 3]
2.splice 返回的是操作的数组,此方法会改变现有数组;
1var a = [1, 2, 3];
2
3console.log(a.splice(1, 1)) // [2];
4
5console.log(a); // [1, 3]
6
7var a = [1, 2, 3]
8
9console.log(a.splice(1, 0, 4, 4) ) // []
10
11console.log(a) // [1, 4, 4, 2, 3];插在索引项前面
12
13var a = [1, 2 ,3];
14console.log(a.splice(3, 1, 4)) // []
15console.log(a) // [1, 2, 3, 4]
3. concat 返回的是合并的结果,此方法不会更改现有数组
1var a = [1, 2, 3]
2console.log(a.concat([4])) // [1, 2, 3, 4]
3
4console.log(a) // [1, 2, 3]
5
6// 也适用于字符串
7
8console.log("abc".concat('de')) // abcde
注意:对象引用(而不是实际对象):concat将对象引用复制到新数组中。 原始数组和新数组都引用相同的对象。 也就是说,如果引用的对象被修改,则更改对于新数组和原始数组都是可见的。 这包括也是数组的数组参数的元素。
4. reverse 返回的是翻转过的数组,此方法会改变现有数组;
1var arr = [1, 2, 3]
2
3console.log(arr.reverse()) // [3, 2, 1]
4
5console.log(arr) // [3, 2, 1]
5.slice 返回的是切割后的数组, 此方法不会更改现有数组
1var arr = [1, 2, 3]
2
3console.log(arr.slice(0, 2)) // [1, 2]
4
5console.log(arr) // [1, 2, 3]
6.push pop unshift shift
1// -push 返回的是push后数组的长度,此方法会改变现有数组;
2var arr = [1, 2, 3]
3console.log(arr.push(0)) // 4;长度
4console.log(arr) // [1, 2, 3, 0]
5
6// -pop 返回的是 pop出来的元素, 此方法会改变现有数组;
7var arr = [1, 2, 0]
8console.log(arr.pop()) // 0;弹出元素
9console.log(arr) // [1, 2]
10
11// -shift 返回的是 shift出来的元素, 此方法会改变现有数组;
12const arr = [1, 2, 3]
13console.log(arr.shift()) // 1;弹出元素
14console.log(arr) // [2, 3]
15
16// -unshift 返回的是unshift后数组的长度,此方法会改变现有数组;
17var arr = [1, 2, 3]
18console.log(arr.unshift(0)) // 4;长度
19console.log(arr) // [0, 1, 2, 3]
7. forEach() 对数组中的每一项运行给定函数,这个方法没有返回值,此方法不会更改现有数组
map() 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组,此方法不会更改现有数组
filter() 对数组中的每一项运行给定函数,返回调用该函数会返回true的项组成的数组,此方法不会更改现有数组
8.sort 返回的是排序后的数组,此方法会改变现有的数组;
1var a = [1,4,3,2]
2var b = a.sort((a, b)=> a - b)
3console.log(a) // [1, 2, 3, 4]
4console.log(b) // [1, 2, 3, 4]
另外:indexOf includes slice对数组字符串都有效, splice reverse只对数组有效