JS中常⽤的数组API ES5之前的数组API
1.arr.push()
从末尾添加元素,返回值为添加完之后的数组长度,改变原数组;
数据如果是数组,整体增加
var arr = [1, 2, 3, 4, 5];
console.log(arr.push(6, 7));    //7
console.log(arr);    // [1, 2, 3, 4, 5,6,7]js合并两个数组
2.arr.pop()
从末尾删除元素,每次只能删⼀个,返回值为被删除的元素,改变原数组;
没有东西可删,返回undefined;
var arr = [1, 2, 3, 4, 5];
console.log(arr.pop());    //5
console.log(arr);    // [1, 2, 3, 4]
总结:arr.push()和arr.pop()提供了栈后进先出的功能
栈是⼀种LIFO的数据结构,也就是最后添加的项最早被移除
  栈中项的推⼊和弹出只发⽣在⼀个位置—栈的顶部
3.arr.unshift()
从开头添加元素,返回值为添加完之后的数组长度,改变原数组;
数据如果是数组,整体增加
var arr = [1, 2, 3, 4, 5];
console.log(arr.unshift(-1, 0));    //7
console.log(arr);    //[-1, 0, 1, 2, 3, 4, 5]
4.arr.shift()
从开头删除元素,每次只能删⼀个,返回值为被删除的元素,改变原数组;
var arr = [1, 2, 3, 4, 5];
console.log(arr.shift());    //1
console.log(arr);    //[2, 3, 4, 5]
总结:arr.unshift()和arr.shift(),可以像使⽤队列⼀样使⽤数组
  队列数据结构的访问规则是FIFO,队列在列表的末端添加项,从列表的前端移除项
5.arr.splice()
删除并替换指定位置的数据,改变原数组;
如果没有删除元素,返回空数组;
var arr = [1, 2, 3, 4, 5];
console.log(arr.splice(2, 0, 'r'));    //[]
console.log(arr.splice(2, 2, 'r'));    //[3, 4]
console.log(arr);    //[1, 2, "r", 5]
6.arr.slice()
截取拷贝【)⼦数组,返回新拷贝的数组,不改变原数组;
参数如果为负数,从后往前,-1是最后⼀个;
var arr = [1, 2, 3, 4, 5];
console.log(arr.slice(1, 3));    //[2, 3]
console.log(arr.slice(1, -1));    //[2, 3, 4]
console.log(arr.slice(0));    //[1, 2, 3, 4, 5] -> 复制了⼀个新数组
at()
合并数据,返回合并后的新数组,不修改原数组
数据是数组,⾃动展开第⼀层,第⼆层整体合并
var arr = [1, 2, 3, 4, 5];
console.at(6, [7, 8, [9, 0]]));    //[1, 2, 3, 4, 5, 6, 7, 8, Array(2)]
console.log(arr);    //[1, 2, 3, 4, 5]
verse()
翻转数组,返回新数组,改变原数组;
var arr = [1, 2, 3, 4, 5];
console.verse());    //[5, 4, 3, 2, 1]
console.log(arr);    //[5, 4, 3, 2, 1]
9.arr.join()
将数组通过指定符号转为字符,没有默认为逗号,返回转换结果,不改变原数组;
var arr = [1, 2, 3, 4, 5];
console.log(arr.join());    //1,2,3,4,5
console.log(arr.join(''));    //12345
console.log(arr.join('@'));    //1@2@3@4@5
console.log(arr);    //[1, 2, 3, 4, 5]
10. arr.sort()
排序,默认规则是按照字符的⽐较规则,升序,返回改变之后的数组,改变原数组;
var arr = [2, 10, 6, 1, 4, 22, 3];
console.log(arr.sort());    //[1, 10, 2, 22, 3, 4, 6]
console.log(arr.sort((n, m) => n - m));    //[1, 2, 3, 4, 6, 10, 22]
console.log(arr.sort((n, m) => m - n));    //[22, 10, 6, 4, 3, 2, 1]
ES5新增的数组API——均不改变原数组
1.arr.indexOf() / arr.lastIndexOf()
查数据的索引,没有返回-1,第⼆个参数可以指定位置
var arr = [1, 3, 2, 3, 4, 5];
console.log(arr.indexOf(3));    //1
console.log(arr.indexOf(8));    //-1
console.log(arr.indexOf(3, 2));    //3
console.log(arr.indexOf(3, -4));    //3
2. arr.forEach()
遍历数组,为数组的每⼀个元素都执⾏⼀次回调函数,返回值是undefined
回调函数⾃带三个形参:value index arr
var arr = [1, 3, 2, 3, 4, 5];
console.log(arr.forEach((value, i, arr) => {value = value * 2;}));    //undefined
arr.forEach((value, i, arr) => {
value = value * 2;
console.log('value:' + value + 'i:' + i + 'arr:' + arr + '')
});
//value:2i:0arr:1,2,3,4,5
value:4i:1arr:1,2,3,4,5
value:6i:2arr:1,2,3,4,5
value:8i:3arr:1,2,3,4,5
value:10i:4arr:1,2,3,4,5
3.arr.map()
遍历数组,修改数据
var arr = [1, 3, 2, 3, 4, 5];
arr.map((value, index, arr) => {
value = value * 2;
console.log(`value:${value};index:${index};arr${arr}`)
});
//value:2;index:0;arr1,2,3,4,5
value:4;index:1;arr1,2,3,4,5
value:6;index:2;arr1,2,3,4,5
value:8;index:3;arr1,2,3,4,5
value:10;index:4;arr1,2,3,4,5
var arr1 = arr.map((value, index, arr) => {
value = value * 2;
return value;
})
console.log(arr);    //[1, 2, 3, 4, 5]
console.log(arr1);    //[2, 4, 6, 8, 10]
总结:arr.forEach()和arr.map()的区别
前者代替for循环,后者不仅遍历还可以修改,并返回新数据
前者的返回值是undefined,后者有返回值
4.arr.filter()
遍历数组,过滤数据,返回符合条件的值
var arr = [1, 3, 2, 3, 4, 5];
console.log(arr.filter((value, index, arr) => index > 1));    //[3, 4, 5]
5.arr.some()
遍历数组,检测所有数据,只要有⼀个是真就返回true,同时停⽌遍历var arr = [1, 3, 2, 3, 4, 5];
console.log(arr.some((value, index, arr) => value > 7));    //false
6.arr.every()
遍历数组,检测所有数据,只要有⼀个是假就返回false,同时停⽌遍历var arr = [1, 3, 2, 3, 4, 5];
console.log(arr.every((value, index, arr) => value > 2));    //false
duce() / duceRight()
归并,有两个参数,第⼀个是回调,第⼆个是初始值
只有callback(prev,current,index,arr)
var arr = [1, 2, 3, 4, 5];
console.duce((prev, current) => {return prev + current;}));    //15    有callback(prev,current,index,arr)和另⼀个参数时,另⼀个参数是初始值var arr = [1, 3, 2, 3, 4, 5];
console.duce((prev, current) => {return prev + current;}, 50));    //65
总结:duce()⼀个参数和两个参数的区别,就是重新设置初始值的区别
⼀个参数时,初始值是数组第⼀项;两个参数时,第⼆个参数是初始值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。