【问题标题】:Modify object value in array inside map修改地图内数组中的对象值
【发布时间】:2021-04-11 06:54:46
【问题描述】:

尝试在某些数组上修改数组中的对象值,覆盖不起作用,这是我的 sn-p

const removeAction = (target, array, name) => {
        let mutation = JSON.parse(JSON.stringify(array));
        mutation.map( obj => {
            if(obj.value === target.value) {
                console.log(obj)
                obj.checked = false
            } 

            return obj
        })

        console.log(mutation)
        removeCallback(mutation, name)
    }

然后我取回数组中的原始对象。如何调试此问题?

【问题讨论】:

  • .map 返回修改后的数组副本。你永远不会使用那个值
  • "我取回数组中的原始对象。" - 在哪里?什么不起作用?这个怎么称呼,removeCallback 是什么?您是否传递了不属于arraytarget?请提供minimal reproducible example

标签: javascript loops object updates


【解决方案1】:

您可以通过解构对象和更新属性来获取映射对象。

const
    removeAction = (target, array, name) => {
        removeCallback(array.map(obj => ({
            ...obj,
            checked: obj.value === target.value ? false : obj.checked
        })), name)
    };

【讨论】:

  • 谢谢我也试过了,我得到了同样的结果,它与传递给函数的初始数组有关
【解决方案2】:

Map 总是返回数组的新实例。因此,要么将该变异映射分配给某个变量,要么循环并变异原始数组。

【讨论】:

    【解决方案3】:
    const modifiedArray = JSON.parse(JSON.stringify(array)).map(...
    

    【讨论】:

      猜你喜欢
      • 2021-04-30
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多