首页 > 解决方案 > 如果数组包含具有给定条件的对象,则通过检查其对象数组来查找对象数组中的对象

问题描述

给定一系列产品类别的对象,如下所示:

[{
    id: 1,
    name: "A",
    products: [{
      id: 1,
      price: 1
    }]
  },
  {
    id: 2,
    name: "B",
    products: [{
      id: 2,
      price: 1
    }]
  }
]

请帮助我使用产品ID返回类别名称的功能。我已经尝试过,但无论我输入了哪个产品 ID,即使是不存在的产品 ID,我的结果总是返回“A”。这是我到目前为止所尝试的:

const populate = function(productID) {

  // main code here
  return categories.find(x => {
    let products = x.product;
    console.log(products.find(e => e.id = productID));
    if (products.find(e => e.id = productID) != undefined) return true;
    return false;
  }).name;
}

我一直在寻找任何地方,但我的问题没有任何答案。

标签: javascriptarrays

解决方案


1)获取products (您可以使用解构)并循环获取id等于的产品productID

2)您可能无法找到该产品,那么您也应该处理该案例。为此,您可以使用可选链接

您也可以将其设为单线

const populate = (productID) => categories.find(({ products }) => products.find(({ id }) => id === productID))?.name;

const categories = [
  {
    id: 1,
    name: "A",
    products: [
      {
        id: 1,
        price: 1,
      },
    ],
  },
  {
    id: 2,
    name: "B",
    products: [
      {
        id: 2,
        price: 1,
      },
    ],
  },
];

const populate = function (productID) {
  return categories.find(({ products }) => {
    return products.find(({ id }) => id === productID);
  })?.name;
};

console.log(populate(2));


推荐阅读