javascript - ES6 - 如何通过在 Java Script 中过滤返回嵌套对象属性值
问题描述
基于过滤器查找嵌套对象属性值
请建议识别给定项目 id 03 的名称的最佳方法。
const product = products.find(product => product.items.some(item => item.id === '03'));
给出产品但必须再次循环才能找到名称?
const products = [
{
id: 'p1',
items: [
{
id: 01,
name: 'iphone'
},
{
id: 02,
name: 'samsung'
},
{
id: 03,
name: 'oneplus'
}
]
},
{
id: 'p2',
items: [
{
id: 04,
name: 'nokia'
},
{
id: 05,
name: 'nexus'
},
{
id: 06,
name: 'phone3'
}
]
}
]
}
]
解决方案
由于您似乎关心性能,并且看起来只有一个匹配的 id - 经典for
循环最适合这项任务。
let matchingItem;
for (let i = 0; i < products.length; i++){
const product = products[i];
matchingItem = product.items.find(item => item.id === "03");
if (matchingItem) {
break;
}
}
它不是很花哨,但是一旦找到匹配项就停止执行的能力使其成为最佳选择。
推荐阅读
- slice - 不明白为什么要使用 slice (React-native)
- php - Select2 - 无法选择 ajax 结果(不可点击)
- php - 将函数参数传递给 sql 查询
- scala - 如何解释 fold 和 foldK 之间的区别?
- angular - 模块构建失败:错误:找不到模块“node-sass”
- php - 仅对继承的方法禁用 squiz.commenting.functioncomment.missing phpcs 嗅探
- vba - 根据表格中提供的输入,将其他演示文稿中的特定幻灯片插入到当前
- matlab - 在 MATLAB 中生成 1 和 -1
- unix - 用字符替换列中的空格
- r - 当轴位于图形的顶部和底部时,按 y 轴对齐水平图