如何更改数组元素属性

时间:2016-09-08 23:59:56

标签: javascript arrays underscore.js

这就是我所拥有的。我试图更新我选定的数组元素中的firstName值。当我执行代码时,它只是添加我尝试识别的属性和所选数组元素的所需值。

var _ = require('underscore');
var data = [
{id:1, firstName: 'John', lastName: 'Smith'},
{id:2, firstName: 'John', lastName: 'Doe'},
{id:3, firstName: 'Johnny', lastName: 'Smith'}
 ];

module.exports.lookupById = function(id, newName) {
console.log('Lookup By ID: ' +  (id));
Id = _.where(data, {id: id });
console.log(Id);    
newId = Id;
newId['firstName'] = newName;
console.log(newId);

此代码位于执行上述代码的文件中

var foo = require('./hwa1');
foo.lookupById(2, 'Mary');

1 个答案:

答案 0 :(得分:0)

您可以通过常规循环实现此目的,请检查以下代码:

var data = [
    {id:1, firstName: 'John', lastName: 'Smith'},
    {id:2, firstName: 'John', lastName: 'Doe'},
    {id:3, firstName: 'Johnny', lastName: 'Smith'}
];

function lookupById(id, newName) {
    _.each(data, function(item) {
         if(item.id === id) {
             item.firstName = newName
         }
    });
}

这将更改ID与条件匹配的每个项目。

或使用findWhere为您提供更清晰的代码:

function lookupById(id, newName) {
     var itemToChange = _.findWhere(data, { id: id });
     itemToChange.firstName = newName;
 }

这只会更改ID符合条件的第一项。