数组
forEach(): 对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。参数都是function类型,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身。
a = [2,5,1,7,6,3];
a.forEach((item, index) => {console.log(item * 2)})
map(): 指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
a = [2,5,1,7,6,3];
b = a.map( item => item * 2);
filter():“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。
a = [2,5,1,7,6,3];
b = a.filter( item => item > 3); // [5,7,6]
every() :判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
a = [2,5,1,7,6,3];
b = a.every( item => item > 3); // false
some() :判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
a = [2,5,1,7,6,3];
b = a.some( item => item > 3); // true
reduce()和 reduceRight() :这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
a = [2,5,1,7,6,3];
b = a.reduce( (sum, item) => {return sum + item});
对象
keys + forEach 之流 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)
let obj= {a:1, b:2};
Object.keys(obj).forEach((key) => {
console.log(obj[key])
})
for in 循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)
let obj= {a:1, b:2};
for(let i in obj){
console.log(obj[i])
}
Object.getOwnPropertyNames() 返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性).
let obj= {a:1, b:2};
Object.getOwnPropertyNames(obj).forEach((key) => {
console.log(obj[key])
})
Reflect.ownKeys(obj) 返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
let obj= {a:1, b:2};
Reflect.ownKeys(obj).forEach(function(key){
console.log(obj[key]);
});