我如何 .map() 通过分层的数据?

How do I .map() through data that is layered?

我正在了解 fetch() 并且正在努力解决一个问题。我有一些正在获取的 JSON 数据,但关键是每个项目的“父级”,例如它看起来像:

 products
    p1
      description:"Lorem Ipsum"
      name:"some product"
      price:9.99
    p2
      description:"Dolar sit amet"
      name:"another product"
      price:15.5

我想.map()将这些数据放入一个新数组中,例如:

  const newData= data.results.map(item => {
    return {
      id: item.id,
      name: item.name,
      description: item.description,
      price: item.price
    };
  });

但我不明白如何在没有密钥的情况下遍历每个项目并保存它的 ID。

有人知道我该怎么做吗?

您可以使用 Object.entries() 函数执行此操作:

The Object.entries() method returns an array of a given object's own enumerable string-keyed property [key, value] pairs. This is the same as iterating with a for...in loop, except that a for...in loop enumerates properties in the prototype chain as well.

Object.entries(data.products).map(([key, value]) => ({
    id: key,
    name: value.name,
    description: value.description,
    price: value.price
}));

因为您发布的内容看起来像对象,而不是数组。您必须先将其转换为数组。我建议使用 Object.entries()

Object.entries(products).map(([key, value])=> {
 return {
   id: key, 
   name: value.name,
   description: value.description,
   price: value.price
 }
})