更新Object的一部分并将其发回

时间:2018-06-13 14:41:42

标签: javascript json

我从api

获得如下的json对象
[
    {
        userId: 1,
        title: "title1",
        body: "body1"
    },
    {
        userId: 2,
        title: "title2",
        body: "body2"
    },
    {
        userId: 4,
        title: "title4",
        body: "body4"
    }
]

如何仅更新一个用户,例如userId 4即部分更新json对象。

我知道我可以通过它的id分别更新用户,但我想要实现的只是更新json的部分内容并想要将整个对象发回。

像git那样,更新或添加特定的行或用户。

我希望你能理解我的意思。如果我不清楚,请告诉我。 任何帮助表示赞赏。谢谢

5 个答案:

答案 0 :(得分:2)

您可以使用Array.map运算符操作数组。所以,

const updatedArray = YourArray.map((element, index, array) => {
   if (element.userId === 4) {
      // do something with this element
   }
});

Array.map运算符将返回变异数组。

答案 1 :(得分:1)

let myArray = [ { userId: 1, title: "title1", body: "body1" },
                { userId: 2, title: "title2", body: "body2" },
                { userId: 4, title: "title4", body: "body4" }
              ];

objIndex = myArray.findIndex((obj => obj.userId == 4)); 
myArray[objIndex].title = "updatedTitle";
myArray[objIndex].body = "updatedBody";
console.log("Updated object: ", myArray[objIndex])

答案 2 :(得分:0)

let arr = [
{
    userId: 1,
    title: "title1",
    body: "body1"
},
{
    userId: 2,
    title: "title2",
    body: "body2"
},
{
    userId: 4,
    title: "title4",
    body: "body4"
}
];

function findUserIdIs4(element) {
 return element.userId === 4;
};

const foundIndex = arr.findIndex(findUserIdIs4);

arr[foundIndex].title = "newTitle";

console.log(arr[foundIndex])

答案 3 :(得分:0)

通常,出于这样的目的,您希望将JSON结构如下:

const data = {
  1:{
    userId: 1,
    title: "title1",
    body: "body1"
  },
  2:{
    userId: 2,
    title: "title2",
    body: "body2"
  },
  4:{
    userId: 4,
    title: "title4",
    body: "body4"
  }
}

然后您可以更新特定的"用户":

data[4]["body"] = "body4 updated value"

答案 4 :(得分:0)

一种最好的方法是使用array.map函数。