我如何使用lodash处理阵列内的字段进行备份并恢复它们?

时间:2014-01-12 16:47:51

标签: javascript lodash

我需要做一些数组操作,并希望有人 告诉我_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可以实现这样吗?

1 个答案:

答案 0 :(得分:0)

要创建备份阵列,您可以使用_.map或本机Array.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];
    }
});