将Json数组合并到对象

时间:2016-06-17 08:10:17

标签: javascript arrays json node.js jsonobject

我有一个包含

等对象的数组
[
  {
   "name": "foo",
   "value": "bar"
   },
   {
    "name": "foo1",
    "value": "bar1"
   }
]

我想要像

这样的东西
{"foo":"bar","foo1":"bar1"}

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

只需使用Object.assign

进行缩减

var arr = [
  {
   "name": "foo",
   "value": "bar"
   },
   {
    "name": "foo1",
    "value": "bar1"
   }
];

var arr2 = arr.reduce((z, {name,value})=>
  Object.assign(z, {[name]: value}), {});

console.log(arr2);

这是ES5版本

var arr = [
  {
   "name": "foo",
   "value": "bar"
   },
   {
    "name": "foo1",
    "value": "bar1"
   }
];

var arr2 = arr.reduce(function(a,b) {
  a[b.name] = b.value;
  return a;
}, {});

console.log(arr2);

答案 1 :(得分:1)

您可以简单地遍历数组并按属性构建对象属性 使用Array.prototype.forEach

可以更轻松地完成此操作

var arr = [
  {
    "name": "foo",
    "value": "bar"
  },
  {
    "name": "foo1",
    "value": "bar1"
  }
];

var o = {};

arr.forEach(function(x) {
  o[x.name] = x.value;
});

console.log(o);

答案 2 :(得分:0)

let items = [
  {
  "name": "foo",
  "value": "bar"
  },
  {
    "name": "foo1",
    "value": "bar1"
  }
]

let myObject = {}
for (let item of items) {
  myObject[item.name] = item.value;
}

console.log(myObject);

请注意,这是在es6。