我有一个对象数组,我需要一个函数,通过对象属性(示例中的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/