问题描述
我有一个嵌套的对象数组。如何获取对象属性ID为“随机”并将名称设置为“您赢了”的嵌套数组项 结构如下:
[
{
itemsBundle [
{
id: 'selection'
name: 'Failed'
}
{
id: 'random'
name:'win'
}
]
basketId: 'item'
basketName
tags[{}{}]
}
{}
{}
]
我需要以某种方式将对象放入主数组中,其中嵌套的itemsBundle对象数组包含ID为'random'的对象,然后对该id为'random'的itemBundle的单个对象设置名称,从赢到赢。我考虑过将嵌套的map()与filter()或嵌套的循环一起使用,但不确定哪个选项是最好的,以及如何以更简单的方式实现此结果。我使用的唯一的第三方库是lodash。
解决方法
flatMap和find的工作示例。但它是主要内容的变异,您必须先克隆列表最深。 下次改善您的问题:)
const aa = [
{
itemsBundle: [
{
id: "selection",name: "failed"
},{
id: "random",name: "win"
}
],basketId: "item",basketName: "",tags: [{},{}]
},{},{}
];
const items = aa.flatMap(a => a.itemsBundle || [])
const itemFound = items.find(item => item.id === 'random')
itemFound.name = 'you win'
console.log(aa[0].itemsBundle[1])