如何获取对象属性ID为“ random”的嵌套数组项并更改name属性

问题描述

我有一个嵌套的对象数组。如何获取对象属性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])