本文 首先对数组常用方法进行分类,具体使用方法会在分类后整理。
pop()、push()、reverse()、shift()、unshift()、sort()、splice()、splite() …
concat()、join()、slice()、filter() 、reduce() …
3.es6新增的如map()、find()、findIndex()、filter()、every()、some ()会不会改变原数组???
1、用forEach、map函数对引用类型的数组元素的属性值进行了修改,原数组也会跟着改变。即可能是数组、对象、函数(函数是引用类型)。
forEach里的回调函数对引用类型的数组元素的属性有修改操作。他们的特点大多需遍历数组
2、如果你不希望原数组在上述情况下被改变的解决办法:
对操作数组进行深拷贝。用拷贝的对象调用数组处理方法,原数组就不会改变了。
1.删除数组末尾的元素 pop()
var last = fruits.pop(); // remove Orange (from the end) // last: "Orange"; fruits: ["Apple", "Banana"];
2删除数组最前面(头部)的元素 shift()
var first = fruits.shift(); // remove Apple from the front // first: "Apple"; fruits: ["Banana"];
3 添加元素到数组的末尾 push()
var newLength = fruits.push('Orange'); // newLength:3; fruits: ["Apple", "Banana", "Orange"]
4添加元素到数组的头部
var newLength = fruits.unshift('Strawberry') // add to the front // ["Strawberry", "Banana"];
5 forEach() 遍历数组
// 遍历:forEach let arr = ['张飞', '关羽', '赵云', '张辽', '曹仁', '许褚']; // ECMAScript5:forEach // arr.forEach( function (item, index, o) { // // 第一个参数:item,代表当前项 // // 第二个参数:index,代表当前项索引值 // // 第三个参数:o,代表当前数组本身 // console.log( item, index, o ); // } );
6 find:遍历查找,返回第一个满足条件的元素
// find:遍历查找,返回第一个满足条件的元素 // let re = [6, 2, 7, 4, 5, 9].find( function (item, index, o) { // // console.log( item, index, o ); // return item > 6; // } ); // console.log( re );
7 findIndex:遍历查找,返回第一个满足条件的元素的索引值
// findIndex:遍历查找,返回第一个满足条件的元素的索引值 // let re = [6, 2, 7, 4, 5, 9].findIndex( function (item, index) { // return item > 6; // } ); // console.log( re );
8 some:遍历查找,如果有满足条件有一个就会返回true,否则就是false
// some:遍历查找,如果有满足条件有一个就会返回true,否则就是false // let re = [6, 2, 7, 4, 5, 9].some( function (item, index) { // return item > 6; // } ); // console.log( re );
9 every:遍历查找,每个元素都满足条件则返回true,否则就是false
// every:遍历查找,每个元素都满足条件则返回true,否则就是false // let re = [6, 2, 7, 4, 5, 9].every( function (item, index) { // return item > 6; // } ); // console.log( re );
10 filter:遍历筛选,筛选出满足条件的元素返回新的数组
// filter:遍历筛选,筛选出满足条件的元素返回新的数组 // let re = [6, 2, 7, 4, 5, 9].filter( function (item, index) { // return item > 6; // } ); // console.log( re );
11 map:遍历数组,让每个元素执行一边回调函数把所有结果放到新数组返回
// map:遍历数组,让每个元素执行一边回调函数把所有结果放到新数组返回 let re = [6, 2, 7, 4, 5, 9].map( function (item, index) { return item * item; } ); console.log( re );
12 sort:数组排序
// sort:数组排序 // let arr = [23, 66, 123, 33, 7, 46]; // console.log( arr.sort() ); // let re = arr.sort( function (a, b) { return a - b; } );// 从小到大排序 // console.log( re ); // console.log( arr.sort( function (a, b) { return b - a; }) );
13 reverse:翻转数组顺序
// reverse:翻转数组顺序 // let arr = ['a', 'b', 'c'];
14 join:用指定内容连接数组成为字符串
// join:用指定内容连接数组成为字符串 // let arr = ['张三', '李四', '尼古拉斯']; // let re = arr.join('');
15 indexOf:查找首次出现的索引位置,找不到就会返回-1
lastIndexOf:查找尾次出现的索引位置,找不到就是-1
let arr = ['a', 'b', 'c', 'd', 'a', 'b', 'c']; // 查找数组中是否具有c // indexOf:查找首次出现的索引位置,找不到就会返回-1 // let re = arr.indexOf('m'); // lastIndexOf:查找尾次出现的索引位置,找不到就是-1 // let re = arr.lastIndexOf('m');
16 concat:拼接数组
// concat:拼接数组 let re = arr.concat([1, 2, 3], ['11', 22, 33], 'aa', 'bb', 'cc'); console.log( re )
17 Array.from();:把伪数组转换为真数组
// Array.from();:把伪数组转换为真数组 // 注意:要想使用这个方法,那么伪数组必须有length,否则转换不了 // let o = { // 0 : 'aa', // 1 : 'bb', // 2 : 'cc', // 3 : 'dd', // length : 4 // } // // 把伪数组转换为真数组 // let arr = Array.from(o); // console.log(arr);