谁能告诉我代码中发生了什么?
Can any one tell me what is happening in the code?
const items = [
{ name: 'Bike', price: 100 },
{ name: 'TV', price: 200 },
{ name: 'Album', price: 10 },
{ name: 'Book', price: 5 },
{ name: 'Phone', price: 2000 },
{ name: 'Keyboard', price: 50 },
{ name: 'Mouse', price: 500 },
{ name: 'Computer', price: 30 },
]
const foundItem = Boolean(items.length) && items.filter(item => item.price === 10)
console.log(foundItem)
我很难理解代码above.Can谁能告诉我上面的代码发生了什么?
这里找到的项目是{ name: 'Album', price: 10 }
。
逻辑是过滤掉所有价格等于10
的商品,而items
的数组长度至少有1个商品。
并在控制台打印。
Boolean(item.length) 说:如果项目至少有一项。
item.filter(item => item.price === 10) 说:return 价格等于 10 的所有项目。filter 是一个数组方法 return符合您定义的条件的项目。
请告诉我们您不理解其中的哪一部分。布尔构造函数,&&
shorthand 运算符,还是 filter
方法?
const foundItem = Boolean(items.length) && items.filter(item => item.price === 10)
有点等同于:
let foundItem;
if (!items.length) {
foundItem = false;
} else {
foundItem = items.filter(item => item.price === 10);
}
Array.prototype.filter
的使用方法请参考MDN docs。
const array2 = array1.filter(method)
这个 returns 一个新数组 (array2
) 包含 array1
的所有元素,通过函数 method
.[=20= 定义的“测试” ]
if(items.length){ // checking that array is empty or not
for(let i = 0; i < items.length; i++){ // looping
if(items[i].price === 10){ // checking all items price 10 not not
foundItem.push( items[i]); // store
}
}
}
希望这段代码片段能帮助您理解。
const items = [
{ name: 'Bike', price: 100 },
{ name: 'TV', price: 200 },
{ name: 'Album', price: 10 },
{ name: 'Book', price: 5 },
{ name: 'Phone', price: 2000 },
{ name: 'Keyboard', price: 50 },
{ name: 'Mouse', price: 500 },
{ name: 'Computer', price: 30 },
]
const foundItem = Boolean(items.length) && items.filter(item => item.price === 10)
console.log(foundItem)
我很难理解代码above.Can谁能告诉我上面的代码发生了什么?
这里找到的项目是{ name: 'Album', price: 10 }
。
逻辑是过滤掉所有价格等于10
的商品,而items
的数组长度至少有1个商品。
并在控制台打印。
Boolean(item.length) 说:如果项目至少有一项。
item.filter(item => item.price === 10) 说:return 价格等于 10 的所有项目。filter 是一个数组方法 return符合您定义的条件的项目。
请告诉我们您不理解其中的哪一部分。布尔构造函数,&&
shorthand 运算符,还是 filter
方法?
const foundItem = Boolean(items.length) && items.filter(item => item.price === 10)
有点等同于:
let foundItem;
if (!items.length) {
foundItem = false;
} else {
foundItem = items.filter(item => item.price === 10);
}
Array.prototype.filter
的使用方法请参考MDN docs。
const array2 = array1.filter(method)
这个 returns 一个新数组 (array2
) 包含 array1
的所有元素,通过函数 method
.[=20= 定义的“测试” ]
if(items.length){ // checking that array is empty or not
for(let i = 0; i < items.length; i++){ // looping
if(items[i].price === 10){ // checking all items price 10 not not
foundItem.push( items[i]); // store
}
}
}
希望这段代码片段能帮助您理解。