0

我需要进行一些数组操作,并希望有人告诉我 _lodash 是否可以用于此目的。我所拥有的是一个名为的数组result,其中包含以下内容:

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}
]

我需要能够仅使用备份阵列中的数据中的位置字段更新我的原始阵列并将其恢复到:

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

_lodash 可能会发生这样的事情吗?

4

1 回答 1

0

要创建备份数组,您可以使用_.map或 nativeArray.prototype.map将原始对象转换为仅具有一个属性的新对象:

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

然后要恢复这些值,您希望将结果对象与备份对象“合并”。Lo-Dash 提供_.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];
    }
});
于 2014-01-12T17:40:27.903 回答