Javascript 更改对象键名称的有效方法
我正在尝试将对象键名称更改为其他名称。比如“name=>text,_id=>value” 我试了以下方法,效果很好。我想知道是否有更好的方法Javascript 更改对象键名称的有效方法,javascript,underscore.js,Javascript,Underscore.js,我正在尝试将对象键名称更改为其他名称。比如“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 = [];
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);
如果属性的数量只有两个,您可以手动映射它们
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;
});
这些代码比原始代码更短,可读性更高。由于原始键和备用键之间存在一一对应关系,因此从语义上讲,映射操作可能更合适。这正是我所寻找的。谢谢