从 ArrayObject 创建新的单一对象

Create new Single Object from an ArrayObject

我想要一个 Object 可以简单地更改为 JSON 格式以便稍后导出。 为此,我有一个 objectsarray,如下所示:

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

必须完全像这样

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

因此,一个对象具有数组所有对象的值,但只有“name”和“value”的值。 Angular merge/copy/extend 等等正在使用 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",
}

使用原生JavaScriptArray#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);

试试这个

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