javascript中提供了一些迭代的方法,包括every,some,filter,map,forEach.
1、filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。
let odd=array.filter(item=>{//获取出数组中的奇数
return (item%2!=0);
})
let even=array.filter(item=>{//获取数组中偶数
return (item%2===0)
})
2、forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
let a=[];
let b=[];
let arr=[1,2,3,4,5,6];
arr.forEach((item,index)=>{
if(item%2===0){
a.push(item)
}else{
b.push(item)
}
})
console.log(a);//循环遍历每一项复抽离处偶数
console.log(b);//循环遍历每一项抽离处奇数
3、map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
let array1 = [1, 30, 39, 29, 10, 13];
let array =array1.map(item=>{
return item*2
})
console.log(array)
4、some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true.否不符合条件则返回false
var array = [1, 2, 3, 4, 5];
var even = function(element) {
//检查元素是否为偶数
return element % 2 === 0;
};
console.log(array.some(even));
// 预期的输出:真
5、every主要是用于判断一个素组中的值是否符合某个标准。必须是每个值都符合才会返回true。否则返回false.
[12, 5, 8, 130, 44].every(x => x >= 10); // false
[12, 54, 18, 130, 44].every(x => x >= 10); // true
6、补充伪数字转换成数组的几个点
Array.from方法用于将两类对象转为真正的数组:类似数组的对象( array-like object )和可遍历( iterable )的对象(包括 ES6 新增的数据结构 Set 和Map )。
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
};
// ES5 的写法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']
// ES6 的写法
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
// NodeList 对象
let ps = document.querySelectorAll('p');
Array.from(ps).forEach(function (p) {
console.log(p);
});
// arguments 对象
function foo() {
var args = Array.from(arguments);
// ...
}
Array.from('hello')
// ['h', 'e', 'l', 'l', 'o']
let namesSet = new Set(['a', 'b'])
Array.from(namesSet) // ['a', 'b']
Array.from({ length: 3 });
// [ undefined, undefined, undefined ]
Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。
Array.from(arrayLike, x => x * x);
// 等同于
Array.from(arrayLike).map(x => x * x);
Array.from([1, 2, 3], (x) => x * x)
// [1, 4, 9]
值得提醒的是,扩展运算符(...)也可以将某些数据结构转为数组。
// arguments 对象
function foo() {
var args = [...arguments];
}
// NodeList 对象
[...document.querySelectorAll('div')]