将 Json 数组合并到一个对象

Merge Json Array to an Object

我有一个包含像

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

我想要类似

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

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

您可以简单地遍历数组并构建您的对象 属性-by-属性.
使用 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);

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 中。

只需使用 Object.assign

进行 reduce

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