首页 > 解决方案 > 如何从 ID 中获取对象的名称

问题描述

如何使用 id 从数组(例如下面的数组)中获取项目的名称?我曾尝试在 javascript 中使用 .find 函数,但它返回未定义的响应。

{
    "products": [
        {
            "name": "Blue T-Shirt",
            "price": 25.99,
            "description": "A lovely t-shirt.",
            "image": "tshirt.png",
            "id": 1
        },
        {
            "name": "Beige",
            "price": 16.49,
            "description": "Some nice beige pants.",
            "image": "pants.png",
            "id": 2
        },
        {
            "name": "Ugly Shirt",
            "price": 27.99,
            "description": "An ugly, gag-gift shirt.",
            "image": "shirt.png",
            "id": 3
        }
    ]
}

这就是我找到它的方式:

var slug = req.params.product;

var item = products.find(products => products.id === slug).name;

console.log(item);

提前致谢!

标签: javascriptarraysjson

解决方案


.find()products数组上使用:

const data = {"products": [{"name": "Blue T-Shirt", "price": 25.99, "description": "A lovely t-shirt.", "image": "tshirt.png", "id": 1 }, {"name": "Beige", "price": 16.49, "description": "Some nice beige pants.", "image": "pants.png", "id": 2 }, {"name": "Ugly Shirt", "price": 27.99, "description": "An ugly, gag-gift shirt.", "image": "shirt.png", "id": 3 } ] };

const idToFind = 3;

const item = data.products.find((p) => p.id === idToFind);
console.log(item);

{
  "name": "Ugly Shirt",
  "price": 27.99,
  "description": "An ugly, gag-gift shirt.",
  "image": "shirt.png",
  "id": 3
}

如果您希望“找到”包含多个对象的数组,请查看.filter.

const data = {"products": [{"name": "Blue T-Shirt", "price": 25.99, "description": "A lovely t-shirt.", "image": "tshirt.png", "id": 1 }, {"name": "Beige", "price": 16.49, "description": "Some nice beige pants.", "image": "pants.png", "id": 2 }, {"name": "Ugly Shirt", "price": 27.99, "description": "An ugly, gag-gift shirt.", "image": "shirt.png", "id": 3 } ] };

const idsToFind = [ 2, 3 ];

const item = data.products.filter((p) => idsToFind.includes(p.id));
console.log(item);


推荐阅读