2016-09-08 5 views
-3

これは私が持っているものです。選択した配列要素の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

LodashまたはUnderscoreですか?どのバージョン? – Phil

+0

申し訳ありません。それはアンダースコアです。 –

+0

['_.where'](http://underscorejs.org/#find)はあなたが思っていることを返せません。[' _.find'](http://underscorejs.org/#find) 。また、あなたは 'Id'または' newId'と 'newId'が完全に冗長である – Phil

答えて

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はあなたの基準に一致する最初の項目を変更します。

関連する問題