一、不改变原数组
1、将数组转化为字符串(String)
var arr = [1, 2, 3];
var str = String(arr);
console.log(str); //1,2,3
console.log(arr); //[1,2,3]
2、把数组中的所有元素放入一个字符串(join)
var arr = [1, 2, 3];
var str = arr.join(); //默认是逗号,也可以自定义连接符
console.log(str); //1,2,3
console.log(arr); //[1,2,3]
3、数组拼接(concat)
var arr = [1, 2, 3];
var newArr = arr.concat(4, [5, 6]);
console.log(newArr); //[1,2,3,4,5,6]
console.log(arr); //[1,2,3]
4、数组选取,获取子数组(slice 含头不含尾)
var arr = [1, 2, 3];
var newArr = arr.slice(0, 2); //从下标0开始,截取两个
console.log(newArr); //[1,2]
console.log(arr); //[1,2,3]
5、返回某个指定的字符串值在字符串中首次出现的位置(indexOf)
var arr = [1, 3, 2];
var num = arr.indexOf(3);
console.log(num); //1
console.log(arr); //[1,3,2]
6、length---获取数组长度
var arr = [1, 2, 3]
console.log(arr.length) //结果为3
二、改变原数组
1、从数组中添加/删除项目,然后返回被删除的项目(splice(i,n)从第i个开始的n个元素)
var arr = [1, 2, 3];
var newArr1 = arr.splice(0, 2); //从下标0开始,截取到下标2(不包括下标2)
var newArr2 = arr.splice(0, 2, 4, 5);
console.log(newArr1); //[1,2]
console.log(newArr2); //[]
console.log(arr); //[4,5,3]
2、反转数组元素(reverse)
var arr = [1, 3, 2];
var newArr = arr.reverse();
console.log(newArr); //[2,3,1]
console.log(arr); //[2,3,1]
3、对数组的元素进行排序(sort)
var arr = [1, 3, 2];
var newArr = arr.sort((a, b) => a - b); //a-b升序 b-a降序
console.log(newArr); //[1,2,3]
console.log(arr); //[1,2,3]
4、向数组的末尾添加一个或多个元素,并返回新的长度(push)
var arr = [1, 3, 2];
var newArr = arr.push(4);
console.log(newArr); //4
console.log(arr); //[1,3,2,4]
5、删除并返回数组的最后一个元素(pop)
var arr = [1, 3, 2];
var newArr = arr.pop();
console.log(newArr); //2
console.log(arr); //[1,3]
6、用于把数组的第一个元素从其中删除,并返回第一个元素的值(shift)
var arr = [1, 3, 2];
var newArr = arr.shift();
console.log(newArr); //1
console.log(arr); //[3,2]
7、向数组的开头添加一个或更多元素,并返回新的长度(unshift)
var arr = [1, 3, 2];
var newArr = arr.unshift(4);
console.log(newArr); //4
console.log(arr); //[4,1,3,2]
三、数组遍历方法
1、every():对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true。
2、some():对数组中的每一项运行给定的函数,如果该函数对任一项返回true,则返回true。
3、filter():对数组中的每一项运行给定的函数,返回该函数会返回true的项组成的数组。
4、 map():对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组。
5、 forEach():对数组中的每一项运行给定的函数。这个方法没有返回值。
var numbers = [1, 2, 3, 4, 5, 4, 3, 1];
var everyResult = numbers.every(function (item, index, array) {
return item > 2;
});
console.log(everyResult); //false
var someResult = numbers.some(function (item, index, array) {
return item > 2;
});
console.log(someResult); //true
var filterResult = numbers.filter(function (item, index, array) {
return item > 2;
});
console.log(filterResult); //[3,4,5,4,3]
var mapResult = numbers.map(function (item, index, array) {
return item * 2;
});
console.log(mapResult); //[2,4,6,8,10,8,6,2]
var sum = 0;
var forEachResult = numbers.forEach(function (item, index, array) {
array[index] == item; //true
sum += item;
});
console.log(sum); //23
四、归并方法
1、reduce():从数组中的第一项开始,逐个遍历到最后。
2、reduceRight():从数组的最后一项开始,向前遍历到第一项。
var arr = [1, 2, 3, 4, 5];
var sumReduce = arr.reduce(function (prev, cur, index, array) {
return prev + cur;
});
console.log(sumReduce); //15
var sumReduceRight = arr.reduceRight(function (prev, cur, index, array) {
return prev + cur;
});
console.log(sumReduceRight); //15
reduce()
方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
第一次执行回调函数时,不存在“上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行,则需要传递初始值。否则,数组索引为 0 的元素将被作为初始值(reducer 的第二个参数),迭代器将从第二个元素开始执行(索引为 1 而不是 0)