首页 > 解决方案 > 如何找出列表的外部属性

问题描述

我有这个清单

myList = [
    {
        id: 1,
        slug: "fruits",
        title: "Fruits",
        types: [
            {
                id: 1,
                name: 'mango',
                price: '200'
            },
            {
                id: 2,
                name: 'grape',
                price: '500'
            },
            {
                id: 3,
                name: 'banana',
                price: '200'
            }
        ]
    },
    {
        id: 2,
        slug: "veggies",
        title: "Veggies",
        types: [
            {
                id: 4,
                name: 'brocolli',
                price: '200'
            },
            {
                id: 5,
                name: 'tomato',
                price: '500'
            }
        ]
    },
]

假设我只有一个信息,即属性id内的对象的信息types。例如,我有 id = 2 的葡萄。我怎么知道它grapefruits对象的一部分?我想找到与 相关的 slug,grapefruits. 我仍然对这里的逻辑感到困惑。也很抱歉,如果我的问题标题是错误的,我不知道这个问题的关键字。谢谢!

标签: javascriptlistobject

解决方案


您可以使用嵌套Array.find()来在列表中搜索列表。

function findGroupFromTypeId(id, list) {
  const group = list.find(item => {
    return item.types.find(type => type.id === id) !== undefined;
  });
  if (group) {
    return group.slug;
  }
  return 'not found';
}

const myList = [
    {
        id: 1,
        slug: "fruits",
        title: "Fruits",
        types: [
            {
                id: 1,
                name: 'mango',
                price: '200'
            },
            {
                id: 2,
                name: 'grape',
                price: '500'
            },
            {
                id: 3,
                name: 'banana',
                price: '200'
            }
        ]
    },
    {
        id: 2,
        slug: "veggies",
        title: "Veggies",
        types: [
            {
                id: 4,
                name: 'brocolli',
                price: '200'
            },
            {
                id: 5,
                name: 'tomato',
                price: '500'
            }
        ]
    },
];

console.log(findGroupFromTypeId(1, myList));
console.log(findGroupFromTypeId(4, myList));
console.log(findGroupFromTypeId(999, myList));


推荐阅读