【问题标题】:JavaScript/React - Update a value in array with particular key name from a array of arrays [duplicate]JavaScript / React - 使用数组数组中的特定键名更新数组中的值[重复]
【发布时间】:2018-07-19 06:10:54
【问题描述】:

在下面的数组数组中,我需要更新特定 name 的 id 值。

objArray = [{ name: John, id: 12}, { name: Jake, id: 45}, { name: Jacob, id: 78}];

例如:如果用户在文本框中输入名称和 id 并单击提交,我想为特定名称更新数组中的 id。

我可以使用 for 循环来完成此操作,但您能否告诉我在 Java Script/React 中执行此操作的最有效方法?

【问题讨论】:

  • 副本向您展示如何在数组中查找对象。从那里你只需要更新它的name 属性

标签: javascript jquery reactjs ecmascript-6 ecma


【解决方案1】:

使用find函数并设置输入的名称。

看这段代码sn-p

let objArray = [{  name: "John",  id: 12}, {  name: "Jake",  id: 45}, {  name: "Jacob",  id: 78}];

let name = 'Jake'
let newId = 59;
objArray.find((o) => o.name === name).id = newId;

console.log(objArray);
.as-console-wrapper {
  max-height: 100% !important
}

【讨论】:

  • 我认为 OP 想要反过来。更新特定名称的 id。
  • @Skyler 哎呀,你是对的!
  • 谢谢!这解决了它。简洁大方。
  • @Nitheesh 不客气!
【解决方案2】:

您可以使用findIndex 来获取名称匹配的对象的索引。然后使用该索引来更新 id

var objArray = [{
  name: 'John',
  id: 12
}, {
  name: 'Jake',
  id: 45
}, {
  name: 'Jacob',
  id: 78
}];

function update() {
  var getVal = document.getElementById('ip').value.trim();
  var getIndex = objArray.findIndex(function(item) {
    return item.name.toLowerCase() === getVal.toLowerCase();
  })
  objArray[getIndex].id= "newId"
  console.log(objArray)
}
<input type="text" id="ip">
<button onclick="update()">Update</button>

【讨论】:

  • 谢谢brk!这也解决了我的问题,但我会选择 Ele 的答案。我想给你一个,但我没有足够的代表!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 2018-05-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
相关资源
最近更新 更多