从ArrayObject创建新的单个对象

时间:2016-09-02 10:29:22

标签: angularjs json object underscore.js lodash

我想要一个Object我可以简单地更改为 JSON 格式以便稍后导出。 为此,我有array objects这样:

[
  {
    "name": "Test",
    "value": "EN Test"
  },
  {
    "name": "Test2",
    "value": "DE test2"
  }
]

必须像这样

{
 "Test" : "EN Test",
 "Test2" : "DE test2",
}

所以单个对象具有数组中所有对象的值,但只有“name”和“value”的值。 角度合并/复制/扩展等等正在使用2个数组,只是将它们合并而不使用选项,例如只获取名称和值的值。
使用Lodash

object = _.map(objectArray,'name');
Giving me
[ "Test", "Test2", ]
But with multiple
object = _.map(objectArray,['name','value']);
[ false, false, ]
doing
object = _.map(objectarray,_.partial(_.ary(_.pick,2),_,['name','value']));
output is
[ { "name": "Test", "value": "EN Test" }, { "name": "Test2", "value": "DE test2" } ]
not
{ "Test" : "EN Test", "Test2" : "DE test2", }

等等

object = _.mapValues(objectArray,'name');
{
  "0": "Test",
  "1": "Values",
}
this.lang = _.mapValues(this.exportData,_.partial(_.ary(_.pick,2),_,['name','value']));

  "0": {
    "name": "Test",
    "value": "Test"
  },
  "1": {
    "name": "TEst2",
    "value": "Test2"
  },..

我能做些什么才能实现

{
 "Test" : "EN Test",
 "Test2" : "DE test2",
}

2 个答案:

答案 0 :(得分:2)

使用原生JavaScript Array#reduce 方法。



var data = [{
  "name": "Test",
  "value": "EN Test"
}, {
  "name": "Test2",
  "value": "DE test2"
}];

// iterate over array
var res = data.reduce(function(obj, v) {
  // define the object property
  obj[v.name] = v.value;
  // return the object
  return obj;
  // define initial value as empty object
  // for storing the result
}, {})

console.log(res);




答案 1 :(得分:0)

试试这个

var a = [
      {
        "name": "Test",
        "value": "EN Test"
      },
      {
        "name": "Test2",
        "value": "DE test2"
      }
    ];

    var obj = {};

    a.forEach(function(node){
        obj[node.name] = node.value
    });

    console.log(obj);