Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改对象键名称的有效方法_Javascript_Underscore.js - Fatal编程技术网

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

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

我正在尝试将对象键名称更改为其他名称。比如“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);

如果属性的数量只有两个,您可以手动映射它们

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

这些代码比原始代码更短,可读性更高。

由于原始键和备用键之间存在一一对应关系,因此从语义上讲,映射操作可能更合适。这正是我所寻找的。谢谢