更新对象的嵌套数组内的属性

我有这个数组,我想使用我尝试过的 id 更新特定对象内选定的frameId模板

,但是如果我选择frameId = 1,则所有frameId 1模板都会被编辑,我只想要选定的id 。


 sizes.map(size => {

      if(size.id === id){

        size.frames.map(frame => {

          if(frame.frameId === frameId){

            frame.template = {test: '101'}

          }

          return frame

        })

      }

      return size

    })


[

    {

      id: 1,

      name: 'Mrec',

      frames: [

        {

          frameId: 1,

          template: {},

          img: [],

        },

        {

          frameId: 2,

          template: {},

          img: [],

        },

      ],

      active: false

    },

    {

      id: 2,

      name: 'Leaderboard',

      frames: [

        {

          frameId: 1,

          template: {},

          img: [],

        },

        {

          frameId: 2,

          template: {},

          img: [],

        },

      ],

      active: false

    }

]


天涯尽头无女友
浏览 53回答 1
1回答

HUX布斯

我认为正确的方法是这样的。(#edit:它适用于片段)var id = 1,frameId=2;var sizes = [    {      id: 1,      name: 'Mrec',      frames: [        {          frameId: 1,          template: {},          img: [],        },        {          frameId: 2,          template: {},          img: [],        },      ],      active: false    },    {      id: 2,      name: 'Leaderboard',      frames: [        {          frameId: 1,          template: {},          img: [],        },        {          frameId: 2,          template: {},          img: [],        },      ],      active: false    }]sizes.map(size => {        let frames;        if (size.id === id) {            frames = size.frames.map(frame => {                if (frame.frameId === frameId) {                    frame.template = { test: '101' }                }                return frame;            })        } else {            frames = size.frames;        }        return {...size,frames}    })document.write(JSON.stringify(sizes))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript