为了账号安全,请及时绑定邮箱和手机立即绑定

Object.assign() 用于替换 json 的对象

Object.assign() 用于替换 json 的对象

慕娘9325324 2021-11-25 15:59:08
我JSON看起来像这样:{"ArrayInfo": [    {        "name": "A",        "Id": "1"    },    {        "name": "B",        "Id": "2"    },    {        "name": "C",        "Id": "3"    },    {        "name": "D",        "Id": "4"    }]}我想JSON用另一个对象替换一个对象。例如我有这个对象:{"name":"E","Id":"5"}它将被以下对象替换JSON:{"name":"B","Id":"2"}JSON 应如下所示:{"ArrayInfo": [    {        "name": "A",        "Id": "1"    },    {        "name": "E",        "Id": "5"    },    {        "name": "C",        "Id": "3"    },    {        "name": "D",        "Id": "4"    }]}我所做的是使用Object.assign但新对象将添加到数组而不是替换。(所有数据都将是动态的,但为了更易于理解,我使用静态数据)const itemToReplace = { "name": "E", "Id": "5" };const prevItem = ArrayInfo[2]ArrayInfo = ArrayInfo.map((el, idx) => {  return Object.assign({}, el, { prevItem: itemToReplace });});let NewArryInfo = ArrayInfoconsole.log(NewArryInfo)结果console.log(NewArryInfo):{"ArrayInfo": [    {        "name": "A",        "Id": "1"    },    {        "name": "B",        "Id": "2"    },    {        "name": "C",        "Id": "3"    },    {        "name": "D",        "Id": "4"    }    {        "name": "E",        "Id": "5"    }]}
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您可以使用Array.prototype.splice来替换 Array 中的项目。


const replaceItem = {"name":"E","Id":"5"}

const ArrayInfo = [

    {

        "name": "A",

        "Id": "1"

    },

    {

        "name": "B",

        "Id": "2"

    },

    {

        "name": "C",

        "Id": "3"

    },

    {

        "name": "D",

        "Id": "4"

    }

];

ArrayInfo.splice(1, 1, replaceItem); // remove second item and replace

console.log(ArrayInfo);


查看完整回答
反对 回复 2021-11-25
?
慕神8447489

TA贡献1780条经验 获得超1个赞

const object = {

  "ArrayInfo": [{

      "name": "A",

      "Id": "1"

    },

    {

      "name": "B",

      "Id": "2"

    },

    {

      "name": "C",

      "Id": "3"

    },

    {

      "name": "D",

      "Id": "4"

    }

  ]

};


const objectToReplace = {

  "name": "B",

  "Id": "2"

};


const updatedObject = Object.assign({}, object, {

  ArrayInfo: object.ArrayInfo.map((info) => {

    if (info.Id === objectToReplace.Id && info.name === objectToReplace.name) {

      return {

        "name": "E",

        "Id": "5"

      };

    }


    return info;


  })

});


console.log(updatedObject);


查看完整回答
反对 回复 2021-11-25
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

尝试这个!


let ArrayInfo = [{"name": "A","Id": "1"},{"name": "B","Id": "2"},{"name": "C","Id": "3"},{"name": "D","Id": "4"}];

const onReplace = {"name":"E","Id":"5"};

const toReplace = {"name": "B","Id": "2"};


function replaceArray(array, onReplace, toReplace) {

  const removeIndex = array.map(item => { return item.name; }).indexOf(toReplace.name);

  array.splice(removeIndex, removeIndex, onReplace);

  return array

}


console.log(replaceArray(ArrayInfo, onReplace, toReplace));


查看完整回答
反对 回复 2021-11-25
  • 3 回答
  • 0 关注
  • 277 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信