遍历
arr.forEach
在ES5中遍历数组,通常都是使用for循环
var arr = [1,2,3];
for(var i=0; i<arr.length; i++) {
console.log(i);
}
数组提供一个方法:forEach,来代替for循环
forEach方法没有返回值,它传入一个回调函数
这个回调函数接受两个参数,item(数组中的每个元素)和index
var arr = [1,2,3];
var arr = [1,2,3];
arr.forEach(function(item , index) {
console.log(item + '-' + index);
});
for…of
var arr = [1,2,3,4,5,6,7,9,10,11,'a'];
for(let val of arr) {
console.log(val); //每一项元素值
}
for(let index of arr.keys()) {
console.log(index); //每一项元素的下标
}
for(let index of arr.entries()) {
console.log(index); //每一项元素的下标和值,以数组的形式呈现
}
//解构的方式
for(let index of arr.entries()) {
console.log(index); //每一项元素的下标和值,以数组的形式呈现
}
数组方法
arr.map
arr.map的作用:遍历数组的每一项,通过回调函数处理返回一个新的数组
arr.map方法返回一个新的数组,它接受一个回调函数
这个回调函数接受两个参数,item(数组中的每个元素)和index,并且函数的结尾必须return一个值或者对象
例如:每个数组元素都+1
var arr = [1,2,3];
var arr1 = arr.map(function(item , index) {
return item+1;
});
console.log(arr1); //[2, 3, 4]
arr.filter
arr.filter的作用:遍历数组的每一项,只返回符合条件的元素
arr.filter方法返回一个新的数组,它接受一个回调函数
这个回调函数接受两个参数,item(数组中的每个元素)和index,处理结果为true的返回到新的数组,为false则不返回
例如:提取数组中为3的倍数的数字
var arr = [1,2,3,4,5,6,7,9,10,11,12];
var arr1 = arr.filter(function(item , index) {
return item%3==0;
});
console.log(arr1); //[3, 6, 9, 12]
arr.some
arr.some的作用:判断数组中的某个元素是否符合条件,只要有一个符合则返回true
实例:检查数组中是否存在字符串类型的元素
var arr = [1,2,3,4,5,6,7,9,10,11,'a'];
var arr1 = arr.some(function(item , index) {
return typeof item=='string';
});
console.log(arr1); //true
arr.every
arr.every的作用:判断数组中的所有元素是否符合条件,所有元素都符合都返回true
实例:检查数组中所有元素都是字符串类型的元素
var arr = [1,2,3,4,5,6,7,9,10,11,'a'];
var arr1 = arr.every(function(item , index) {
return typeof item=='string';
});
console.log(arr1); //false
arr.reduce
arr.reduce的作用,作为累加器,合并数组中的每个值,最终返回一个值
它接受一个回调函数,这个回调函数接收三个值:
- pre :上一次调用回调返回的值 或者是提供的初始值。
- cur : 数组中当前被处理的数组项
- index :当前数组项在数组中的索引值
一个比较简单的例子,数组求和
let arr = [1,2,3,4,5,6,7,8,9,10];
let sum = arr.reduce(function(pre , cur , index) {
return pre+cur;
});
arr.from
arr.from把类数组的对象转换成数组类型
简单实例:
function show() {
console.log(arguments); //Arguments(5) [1, 2, 3, 4, 5]
let arr = Array.from(arguments);
console.log(arr); //(5) [1, 2, 3, 4, 5]
}
show(1,2,3,4,5);
复制数组:
let arr = [1,2,3,4];
let arr1 = Array.from(arr);
打散字符串:
let str = 'Hello';
let arr1 = Array.from(str); //(5) ["H", "e", "l", "l", "o"]
arr.of
arr.of 把一组值转换成功数组
let arr1 = Array.of(1, 'Hell', true);
console.log(arr1); //(3) [1, "Hell", true]
arr.find 和 arr.findIndex
arr.find 找到第一个符合条件的元素
它接受一个回调函数,回调函数接受两个参数:val , index
找到符合条件的元素则返回,找不到则返回undefined
let arr1 = Array.of(1, 'Hell', true);
console.log(arr1); //(3) [1, "Hell", true]
let result = arr1.find(function(item , index) {
return typeof item == 'boolean';
});
console.log(result); //true
let resultIndex = arr1.findIndex(function(item , index) {
return typeof item == 'boolean';
});
console.log(resultIndex); //2
arr.includes
arr.includes 判断数组中是否存在某个元素
let arr = ['a' , 'b' , 'c'];
console.log(arr.includes('a')); //true
console.log(arr.includes('aa')); //false