这就是我所拥有的。我试图更新我选定的数组元素中的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');
答案 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符合条件的第一项。