for in的用法:
/*
for in
*/
//数组遍历
let ary=[11,3,5,7];
for(let i in ary){
console.log(i);//输出数组下标
console.log(ary[i]);//输出对应的值
}
ary.forEach(function(node){
console.log(node);
})
console.log(ary.forEach(node=>node));//undefined
ary.forEach(node=>console.log(node));//打印每个值
// 对象遍历
let obj={
name:'tom',
age:18,
id:3
}
for(let i in obj){
console.log(i);//打印每个属性值
console.log(obj[i]);//打印每个属性对应的值
}
for in可以用来遍历对象的属性和值,不过此方法有一个缺点就是for in可以遍历出原型上面的属性,若只遍历该对象的自有属性,可以用下面的方法:
let obj={
name:'tom',
age:18,
id:3
}
for (let i in obj) {
if (obj.hasOwnProperty(i)) {
console.log(obj[i]);
}
}
for of方法:
es6新增,用来遍历对象的自有属性
/*
for of
*/
let person={
name:'susan',
age:20,
id:001
}
for (let prop of Object.keys(person)) {//遍历对象的属性
console.log(prop);
}
for (let value of Object.values(person)) {//遍历属性的值
console.log(value);
}
for (let pair of Object.entries(person)) {
console.log(pair);//每一条属性和值构成的数组:["name","susan"] ["age",20] ["id",1]
}
for (let [prop ,value] of Object.entries(person)) {//解构赋值
console.log(prop,value);//属性和值
}
对象->数组->对象
Object.fromEntries(
Object.entries(object).filter(([key, value]) => !predicate(value)))
);