1.遍历
常用方法:for,forEach,for…in, for…of
- for:
var arr = [1,2,3,4];
for(var i=0; i<arr.length; i++){
console.log(arr[i]);
}
- forEach:不能使用break语句跳出循环,也不能使用return语句从闭包函数中返回,从头至尾遍历数组,为每个元素调用指定函数。改变数组本身。函数的参数依次是:数组元素,元素的索引,数组本身。需要注意的是回调函数中的this指向的是window.
var arr = [1,2,3,4,5];
arr.forEach(function(element,index,arr1){
arr[index] = element+1;
})
// arr = [2, 3, 4, 5, 6]
- for…in:这种方法不仅数组本身元素将被遍历到,那些由用户添加的附加元素也将被遍历到,甚至连数组原型中的属性也将被遍历到。甚至在某些情况下,上面代码将会以任意顺序去遍历数组元素。用于遍历包含键值对(key-value)的对象,对数组并不是那么友好。
var arr = [1,2,3,4];
for(var key in arr){
console.log(arr[key]);
}
- filter:将数组元素执行特定函数,而返回一个子集。输入是执行逻辑判断的函数,该函数返回true或false,输出是判定为true的元素
var arr = [1,2,3,4,5];
var arr1 = arr.filter(function(x){
return x<3;
}) //arr1 = [1,2]
~以下是ES6新增~~~
- for…of:是ES6定义的新的遍历数组的方法
var arr = [1,2,3,4];
for (var key of arr.keys){
console.log(arr[key] );
}
for ([key,val] of arr.entries){
console.log(key,val);
}
- every:是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则最后返回true
var arr = [1,2,3,4,5];
var arr1 = arr.every(function(x){
return x<3;
})
//false
- some:是对数组中每一项运行指定函数,如果该函数对任一项返回true,则最后返回true
var arr = [1,2,3,4,5];
var arr1 = arr.some(function(x){
return x<3;
})
//true
- map:调用的数组的每一个元素传递给指定的函数,并返回一个新数组。不改变原数组。函数的参数只有传进来的数组元素
var arr = [1,2,3,4,5];
var arr1 = arr.map(function(x){
return x*x; //一对一的关系,传进来一个值,返回一个对应的值。
}) //arr1 = [1,4,9,16,25]
2.查找
- indexOf:找到返回该值所在位置索引值,找不到返回-1
~以下是ES6新增~~~
- find:遍历数组,找到第一个符合条件的成员。返回值是数组的成员,不再继续遍历,回调三个参数:值,位置,原数组
- findIndex:遍历数组,返回满足项的索引值,找不到返回-1 回调三个参数:值,位置,原数组
var arr = [1,2,3,4,5,5,5];
var arr1 = arr.findIndex(function(x){
return x == 5;
}); //arr1 = 4
- includes():表示某个数组是否包含给定的值,回调参数:待检查的值,搜索的起始位置
3. 转换:类数组转数组
- ES5:[].slice.call(arguments)
- ES6:Array.prototype.from(arraylike,mapFn,thisArg)
4. 创建数组:
ES5:
let arr = new Array(5);
let arr = [];
ES6:
let arr = Array.of(1,2,3,4,5);
- fill(“填充的东西”,起始位置,结束位置)