我正在尝试将对象键名称更改为不同的名称。例如“name => text,_id => value”
我尝试了以下工作正常。我想知道是否有更好的方法来做到这一点?
var a = {
name: "Foo",
_id: "1234"
};
var b = {
name: "bar",
_id: "222"
};
var map = {
name: "text",
_id: "value",
};
var arr = [a, b];
var arr2 = [];
_.each(arr, function (obj) {
obj = _.reduce(a, function (result, value, key) {
key = map[key] || key;
result[key] = value;
return result;
}, {});
arr2.push(obj);
});
console.log(arr2);
答案 0 :(得分:2)
如果属性数量只有两个,您可以手动映射它们。
var arr2 = _.map(arr, function (e) {
var o = {};
o[map.name] = e.name;
o[map._id] = e._id;
return o;
});
有时,手动操作更清洁。
如果要迭代给定对象的属性,则:
var arr2 = _.map(arr, function (e) {
var o = {};
for (k in e) {
o[k] = e[k];
}
return o;
});
这些代码比原始代码更短,更易读。