我有一个来自后端的对象数组,如下所示:
items = [{
id: 0
name: "example1"
price: 15
sizes: [10, 12, 15.5]
types: ["one", "two"]
},
{
id: 1
name: "example2"
price: 15
sizes: [10, 12, 15.5]
types: ["one", "two"]
}
]
我正在接收ID作为道具,并使用find()这样:
let addedItem = items.find((item) => item.id === id)
结果(对于id = 0):
addedItem = {
id: 0
name: "example1"
price: 15
sizes: [10, 12, 15.5]
types: ["one", "two"]
}
我也获得了像type(1),size(0)这样的数据作为道具。 那么如何创建这样的新对象呢?:
item = {
id: 0
name: "example1"
price: 15
size: 10
type: "two"
}
答案 0 :(得分:1)
我只格式化新对象。
let item = items.find((item) => item.id === id)
let formattedItem = {
id: item.id,
name: item.name
price: item.price
size: item.sizes[0]
type: item.types[0]
}
例如,我还会检查 sizes 是否为有效数组
type: item.types.length ? item[0] : null
答案 1 :(得分:1)
您不应使用硬编码的索引在客户端获取值,这应该仅在服务器端进行处理,但仍然可以,如果您希望使其工作,则可以这样做。 如果需要type [1]和size [0],则可以使用map()构造结果对象。
let addedItem = items.find((item) => item.id === id).map(x => {
return {
id: x.id,
name: x.name,
price: x.price,
size: x.size[0],
type: x.type[1]
})
答案 2 :(得分:0)
好,谢谢大家。我的答案:
let item = items.find((item) => item.id === id)
let formattedItem = {
...item,
size: item.sizes[size]
type: item.types[type]
}