javascript - 在数组中查找对象并更改其属性(如果我知道它的其他属性)

标签 javascript arrays object

我有一个对象数组,我需要一个函数,通过对象属性(示例中的id)查找对象数组并更改其其他属性(name) > 在示例中)。目前我的实现如下所示:

var arrayOfObjects = [{
    id: 1,
    name: 'Alpha'
}, {
    id: 2,
    name: 'Bravo'
}];

var setNameById = function (id, newName) {
    arrayOfObjects.filter(function(obj) {return obj.id === id;}).name = newName;
};

console.log(JSON.stringify(arrayOfObjects)); // initial array logged
setNameById(2, 'Charlie');
console.log(JSON.stringify(arrayOfObjects)); // initial array logged

我知道问题在于更改过滤器返回的对象而不是初始对象,但我还没有找到在这种情况下可以访问初始对象的实现,是否可能或者我需要重新考虑让我走到这一步的步骤。

最佳答案

使用它代替过滤器。过滤器产生新数组。

arrayOfObjects.forEach(function(v){
  if (v.id == id) {v.name = newName}
});

关于javascript - 在数组中查找对象并更改其属性(如果我知道它的其他属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38872923/

相关文章:

对象中数组的Javascript长度

javascript - 如何在java脚本中声明未知大小的用户定义对象数组

c++ - 处理对象内对象的光照

javascript - 将单个值与数组进行比较

javascript - 如何将跨多行的 React Native Flexbox 文本水平居中

javascript - 单击事件返回未定义,但是当我在窗口上运行加载事件时,该函数起作用

java - byte[]数组的长度

javascript - 使用 ng-if 或 ng-show 的 Angular 应用中的按钮 'flickering'

javascript - 索引不存在JavaScript?

C : Pass Array of string as function argument