📜  JSON |修改 JSON 对象的数组值(1)

📅  最后修改于: 2023-12-03 15:02:25.973000             🧑  作者: Mango

修改 JSON 对象的数组值

在处理 JSON 数据时,经常需要修改对象中的某个特定数组的值。本文将介绍如何使用JavaScript来修改JSON对象的数组值。

示例

假设我们有一个JSON对象如下所示:

{
  "id": 1,
  "name": "John Doe",
  "friends": [
    {
      "id": 2,
      "name": "Jane Doe"
    },
    {
      "id": 3,
      "name": "Bob Smith"
    }
  ]
}

我们想要将 "id" 为 2 的 "Jane Doe" 的名字改为 "Jane Smith"。

以下是修改 "Jane Doe" 的方法:

const obj = {
  "id": 1,
  "name": "John Doe",
  "friends": [
    {
      "id": 2,
      "name": "Jane Doe"
    },
    {
      "id": 3,
      "name": "Bob Smith"
    }
  ]
};

const friendIndex = obj['friends'].findIndex(friend => friend['id'] === 2);
// 找到 friendIndex 为 0

obj['friends'][friendIndex]['name'] = 'Jane Smith';
// 修改 "Jane Doe" 的名字为 "Jane Smith"

console.log(obj);
// 输出: { "id": 1, "name": "John Doe", "friends": [{ "id": 2, "name": "Jane Smith" }, { "id": 3, "name": "Bob Smith" }] }
解析

我们定义了一个函数 findIndex 取得对应 id 的索引,使用这个索引来访问我们想要修改的对象,最后修改对象的值。

事实上,我们必须找到数组中要修改的元素的索引,因为数组中的每个元素都是对象。在我们的示例中,数组中的元素是朋友对象,每个对象都有一个唯一的 id

findIndex 方法接受一个回调函数作为参数,该函数应该返回 true 或 false。当返回 true 时,该方法将返回数组中相应元素的索引。

const friendIndex = obj['friends'].findIndex(friend => friend['id'] === 2);

一旦我们知道了索引,我们就可以访问要修改的对象。在我们的示例中,要修改的对象是 “Jane Doe”。

obj['friends'][friendIndex]['name'] = 'Jane Smith';

现在我们已经成功地修改了 JSON 对象中的数组值,返回的结果为:

{
  "id": 1,
  "name": "John Doe",
  "friends": [
    {
      "id": 2,
      "name": "Jane Smith"
    },
    {
      "id": 3,
      "name": "Bob Smith"
    }
  ]
}
结论

通过本文,我们学习了如何使用 JavaScript 来修改 JSON 对象中数组的值。我们使用 findIndex 方法找到要修改的对象的索引,并通过索引访问要修改的对象。最后,我们修改对象的值,并成功修改了JSON对象的数组值。