2014-01-12 4 views
0

Мне нужно сделать некоторые манипуляции с массивами и хотел бы иметь кого-то скажите, если _lodash - это что-то, что я мог бы использовать для этого. То, что я массив называется result, который содержит следующее:Как я могу использовать _lodash для работы с полями внутри массива, поддерживая их и восстанавливая их?

var result = 
[ 
{"referenceId":20,"callerId":1, "location":2}, 
{"referenceId":21,"callerId":1, "location":3} 
] 

Я хотел бы создать резервную копию этого массива, который выглядит следующим образом:

var resultBackup = 
[ 
{"location":2}, 
{"location":3} 
] 

Мои пользователи могут изменить данные, такие что массив выглядит следующим образом:

var result = 
[ 
{"referenceId":20,"callerId":1, "location":999}, 
{"referenceId":21,"callerId":1, "location":123} 
] 

Мне нужно, чтобы иметь возможность обновить свой исходный массив с только полем адреса из данных в backu р массив и восстановить его:

var result = 
[ 
{"referenceId":20,"callerId":1, "location":2}, 
{"referenceId":21,"callerId":1, "location":3} 
] 

ли что-то подобное можно с _lodash?

+1

Да это. Это также легко обойтись без библиотеки. (Примечание: Да/нет вопросов, как правило, не являются хорошими вопросами о переполнении стека) –

+0

@FelixKling - Спасибо за ваш совет. Я изменил название своего вопроса. Надеюсь, кто-то может дать мне пример с или без _lodash. – Melina

ответ

1

Чтобы создать резервную копию массива, вы можете использовать _.map или родную Array.prototype.map преобразовать исходные объекты на новый объект только с одним свойством:

var resultBackup = _.map(result, function(e) { // or result.map(function(e) { 
    return {location: e.location}; 
}); 

Тогда, чтобы восстановить значения, вы хотите, чтобы «слить «объект результата с объектом резервного копирования. Lo-тир обеспечивает _.assign для этого:

_.forEach(result, function(e, index) { 
    _.assign(e, resultBackup[index]); 
}); 

Или без библиотеки:

result.forEach(function(e, index) { 
    var backup = resultBackup[index]; 
    for (var prop in backup) { 
     e[prop] = backup[prop]; 
    } 
});