将此数组转换为单个对象的最简洁方法是什么?

4

我只是在寻找将以下数组转换为以下对象格式的最简洁方法。非常感谢。

const item = [
  { address: '123 fake street' },
  { loan: 'no' },
  { property: 'no' }
]

const obj = {
    address: '123 fake street',
    loan: 'no',
    property: 'no'
}

请查看此答案:https://dev59.com/iGIj5IYBdhLWcg3wy4DH#67584636 - Maniraj Murugan
4个回答

11
您可以使用 Object.assign()展开语法 将对象数组转换为单个对象。

const item = [
  { address: '123 fake street' },
  { loan: 'no' },
  { property: 'no' }
]

const obj = Object.assign({}, ...item);
console.log(obj);


1

Reducespread 语法 是将数组转换为对象的一种简洁方式。

const item = [
  { address: '123 fake street' },
  { loan: 'no' },
  { property: 'no' }
]

let obj = item.reduce((pre, cur)=>{
    return {...pre, ...cur};
}, {});
    
// Result: obj={address: '123 fake street', loan: 'no', property: 'no'}

1

只需使用简单的 for...of 循环遍历数组,使用 Object.entries 提取键/值对。然后,只需使用该信息更新空对象即可。

const item = [
  { address: '123 fake street' },
  { loan: 'no' },
  { property: 'no' }
];

const obj = {};

for (const el of item) {
  const [[key, value]] = Object.entries(el);
  obj[key] = value;
}

console.log(obj);

附加文档


-1
const arr = [{key:"address", value:"123 fake street"},{key:"loan", value:"no"},{key:"property", value:"no"}];
const object = arr.reduce(
  (obj, item) => Object.assign(obj, { [item.key]: item.value }), {});

console.log(object)

另一种解决方案,速度提高了99%(经jsperf测试)

const object = arr.reduce((obj, item) => (obj[item.key] = item.value, obj) ,{});

更简单的解决方案


// original
const arr = [ 
  {key:"address", value:"123 fake street"},
  {key:"loan", value:"no"},
  {key:"property", value:"no"}
];

//convert
const result = {};
for (var i = 0; i < arr.length; i++) {
  result[arr[i].key] = arr[i].value;
}

console.log(result);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接