我想用 JavaScript 将对象数组转换为对象 [重复]

Posted

技术标签:

【中文标题】我想用 JavaScript 将对象数组转换为对象 [重复]【英文标题】:I want to convert Object Array to Object with JavaScript [duplicate] 【发布时间】:2021-01-04 06:41:05 【问题描述】:

对不起...我在示例上犯了一个错误...

我想将对象数组转换为单个对象。

之前

[
 key: "A", value: "a",
 key: "B", value: "b",
 key: "C", value: "c",
 .
 .
 .
]

之后


 A: "a",
 B: "b",
 C: "c"
 .
 .
 .

我尝试使用 Object.assign(),但效果不佳。

你知道有什么好的方法吗?

【问题讨论】:

@NickParsons:奇怪的是,这个骗子并没有被另一个金徽章所有者关闭,他是该线程中接受答案的作者(完全相同) @YevgenGorbunkov 哦,哈哈,甚至没有意识到。我猜这个问题/答案是 3 岁,所以他们可能已经忘记了他们的旧答案...... @Jamm :不过,您似乎切换方向太快了,我的答案的最新编辑返回了您的预期输出。 【参考方案1】:

您可以使用Array.prototype.reduce():

const src = [key:"A",value:"a",key:"B",value:"b",key:"C",value:"c"],

     result = src.reduce((acc, key,value) => 
      (acc[key] = value, acc), )
      
console.log(result)

【讨论】:

【参考方案2】:

你可以spread ...Object.assign的对象。

const 
    data = [ name: 'A' ,  firstname: 'Jamm' ,  age: "23" ],
    object = Object.assign(, ...data);

console.log(object);

【讨论】:

【参考方案3】:

您可以使用reduce 并在回调内部迭代对象以将键和值添加到累加器对象

let data = [
    name: 'A'
  ,
  
    firstname: 'Jamm'
  ,
  
    age: "23"
  ,
]
const newData = data.reduce((acc, curr) => 

  for (let keys in curr) 
    acc[keys] = curr[keys]

  

  return acc;
, );

console.log(newData)

【讨论】:

【参考方案4】:

您可以使用Array.prototype.reduce 将单个对象组合成一个对象:

const data = [ name: 'A' ,  firstname: 'Jamm' ,  age: '23'];

function combineObjects(arr) 
  return arr.reduce((acc, o) => 
    return  ...o,  ...acc ;
  , );

console.log(combineObjects(data));

【讨论】:

以上是关于我想用 JavaScript 将对象数组转换为对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用map方法将javascript对象数组转换为其他对象数组[重复]

将带有数字键的 JavaScript 对象转换为数组

将嵌套对象中的单值数组转换为单值javascript

如何对 Javascript 对象进行排序,或将其转换为数组?

在javascript中将字符串转换为对象数组的最佳方法?

将数组的每个第n个元素转换为javascript中的对象