更改对象键名称的有效方法

时间:2015-05-14 07:53:41

标签: 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 = [];

_.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);

JSFiddle

1 个答案:

答案 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;
});

这些代码比原始代码更短,更易读。