Object.assign 使用问题

content: [
    [{
        label: '1_1',
        options: [{ label: '1_1_1', checked: false }]
    }, {
        label: '1_2'
    }],
    [{
        label: '2_1',
        options: [{ label: '2_1_1', checked: false }]
    }, {
        label: '2_2'
    }]
]

求问怎么用Object.assign()操作指定的checked,知道content第一层与第二层的索引,需要返回完整的content


图片描述

阅读 2.2k
2 个回答
content = content.map(contentVal => {
  return {list: contentVal.list.map(listVal => {
    if(listVal.options){
      return Object.assign({}, listVal, {options: listVal.options.map(opt => {
        return Object.assign({}, opt, {checked: !opt.checked})
      })})
    }
    return listVal
  })}
 })

谢邀,你的需求很奇怪,感觉是为了用assignassign

MDN上对于Object.assign的定义如下:

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。

注意,他说的是对象,而不是数组。所以在使用逻辑上,你这个当然存在先天的问题:发现没法通过源对象覆盖目标对象了是么?

你这个最好的使用方法,就是遍历数组,然后修改。至于修改时,你用assign还是直接修改,已经没有什么区别了。

想通过奇技淫巧在这里用Object.assign()不好改啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题