猿问

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

我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 = ArrayInfo

console.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"

    }

]

}


慕娘9325324
浏览 278回答 3
3回答

回首忆惘然

您可以使用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 replaceconsole.log(ArrayInfo);

慕神8447489

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);

幕布斯6054654

尝试这个!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));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答