Javscript数组的API是JS中内置的处理数组的方法:
一、操作方法
1: concat ( )
合并数组concat ,有返回值,返回的是一个合并之后的新数组,对原数组没有影响
var arr1 = [1, 2];
var arr2 = [3, 4];
// result结果
var res = arr1.concat(arr2);
console.log(res, arr1, arr2);
2: push ( )
向数组的尾部添加项,有返回值,返回的是添加项之后的数组的长度,会改变原数组,如果想同时添加的多个项,用逗号隔开即可
var arr3 = [1, 2, 3, 4]
var res1 = arr3.push(5, 6, 7, 8, 9);
console.log(res1, arr3);
3: pop ( )
删除数组中的最后一个,有返回值,返回的是删除的项,会改变原数组
var arr3 = [1, 2, 3, 4]
var res2 = arr3.pop();
console.log(res2, arr3);
4: unshift ( )
向数组的头部添加 返回的是添加之后数组的长度,会改变原数组
var arr3 = [1, 2, 3, 4]
var res3 = arr3.unshift(10, 11, 12);
console.log(res3, arr3);
5: shift ( )
删除数组中的第一个 返回的是删除的项,改变原数组
var arr3 = [1, 2, 3, 4]
var res4 = arr3.shift();
console.log(res4, arr3);
6: slice(start,end)
截取 返回值是截取下来的数组,对原数组是没有影响的。start 开始截取的索引值,end 结束截取的索引值(不包括)。只写一个值的话,就是从该索引开始往后截取,直到最后。
var arr = [1, 1, 2, 2, 3, 3, 4, 4];
var res = arr.slice(0, 3);
console.log(res, arr);
var res1 = arr.slice(5);
console.log(res1);
7: splice(start,count,newItem)
删除数组中的某些项 返回的是删除的数据,会改变原数组。
var arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
/*
start 开始删除的索引位置
count 要删除几个,非必填,如果不填,删除后面所有,如果是0,就不删除
newItem 从第三个参数往后,从开始删除的位置,添加新的项
*/
var res3 = arr2.splice(5);
console.log(res3,arr2);
var arr3 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var res4 = arr3.splice(5, 2);
console.log(res4,arr3);
var arr4 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var res2 = arr4.splice(5, 2, 10, 11, 12, 13);
console.log(res2, arr4);
8: delete ( )
删除某个,可以删除,但是位置会保留,数组的长度不会改变。
var arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
delete arr2[0];
console.log(arr2);
9: indexof ( )
获取首个指定元素在数组中的索引位置;如果指定的值在数组中不存在,则返回-1。如果存在,则返回该元素第一次出现的索引值。
var arr = [1, 1, 2, 2, 3, 3, 4, 4];
var res = arr.indexOf(3); // 4
var res1 = arr.indexOf(5); //-1
console.log(res, res1); // 4 -1
10: lastIndexOf ( )
从后往前去查找首个元素出现的位置,如果指定的值在数组中不存在,则返回-1。如果存在,则返回该元素第一次出现的索引值。
var arr = [1, 1, 2, 2, 3, 3, 4, 4];
console.log(arr.lastIndexOf(1)); // 1
二、排序方法
1: reverse ( )
反转数组 返回的是反转之后的数组,改变原数组。
var arr = [1, 2, 3, 4, 5, 6]
var arr1 = arr.reverse()
console.log(arr, arr1);
2: sort 排序
会改变原数组,有返回值,返回的是排序好的数组,默认从小到大,升序。
var arr = [123, 31, 41, 888, 551, 1, 2, 4, 51, 547];
var res = arr.sort();
console.log(res);
三、转换方法
1: join ( )
将数组转为字符串。如果join ( )括号中不添加值,默认就是英文逗号隔开,原数组不变。 如果在join ( )括号中添加值,分隔符之后,每两项之间就会使用分隔符给隔开。
var arr=[1,2,3,4,5,6,7,8,9]
var res = arr.join();
console.log(arr, res);
var res1 = arr.join('|');
console.log(arr, res1);
2: toString ( )
将数组转为字符串,不会改变原数组。
var arr = [1, 2, 3, 4, 5, 6];
var res = arr.toString();
console.log(res, arr);
四、迭代方法
1: every ( )
对数组每一项都运行传入的测试函数,如果所有元素都满足返回 true ,只要有一个不满足返回false
let num = [1, 300, 200, 5, 7]
let arr = num.every(function (el) {
return el %2 !== 0
})
console.log(arr) // true
let arr2 = num.every(function (el) {
return el > 100
})
console.log(arr2) // false
2: some
some迭代函数是测试数组中的元素是否至少有一个满足条件。
返回值:有一个满足条件,则返回true;若都不满足条件,则返回false
let num = [1, 300, 200, 5, 7]
let arr = num.some(function (el) {
return el > 100
})
console.log(arr) // true
let arr_2= num.some(function (el) {
return el > 400
})
console.log(arr_2) // false
3: map
map方法:处理数组中的每个元素,然后将其返回值组成一个新的数组
let num = [1, 2, 3, 4, 5]
let arr = num.map((el) => {
return el*2
})
console.log(arr) // [2, 4, 6, 8, 10]
4: filter
filter方法:类似于数据库中的select查询语句,将满足条件的元素组成一个新数组返回。
let num = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let res = num.filter((item, index, array) => item > 2); //ES6新语法
console.log(res); // 3,4,5,4,3
5: forEach
forEach:能迭代整个数组,没有返回值,和for循环的功能类似。
let num = [1, 2, 3, 4, 5, 4, 3, 2, 1];
num.forEach((item, index, array) => {
// 执行某些操作
});