首页 > 解决方案 > 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'
      }
    ]
  }
    ]
  }
]

标签: javascriptfilterecmascript-6

解决方案


由于您似乎关心性能,并且看起来只有一个匹配的 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;
    }
}

它不是很花哨,但是一旦找到匹配项就停止执行的能力使其成为最佳选择。


推荐阅读