将具有键值对的对象数组转换为单个对象?

时间:2020-09-23 10:07:17

标签: javascript

我有一个带有键-值对的对象数组,如何通过删除键将其简化为单个对象,从而将其转换为对象。我尝试过使用地图过滤器reduce,但是无法获得理想的结果。请帮助

const object = Object.assign({}, ...obj); // not working
const result = {};

Object.keys(object).forEach((key, index) => {
    result[`newObj${index + 1}`] = obj[key].map(item => ({[key]: item}));
}); // not working

输入

   obj = [{key: name, value: jack},{key: age, value: 10},{key: country, value: india},{key: state, value: Delhi}];

输出

{name:jack, age:10, country:india, state: Delhi}

4 个答案:

答案 0 :(得分:2)

使用forEach并进行销毁

更新:根据Jan指出的问题已修复。谢谢@Jan

obj = [
  { key: "name", value: "jack" },
  { key: "age", value: 10 },
  { key: "country", value: "india" },
  { key: "state", value: "Delhi" },
];

const res = {};
obj.forEach(({ key, value }) => Object.assign(res, { [key]: value }));

console.log(res);

或者,使用Object.fromEntriesmap

obj = [
  { key: "name", value: "jack" },
  { key: "age", value: 10 },
  { key: "country", value: "india" },
  { key: "state", value: "Delhi" },
];

const res = Object.fromEntries(obj.map(Object.values));

console.log(res);

答案 1 :(得分:1)

var obj=[{key: "name", value: "jack"},{key: "age", value: 10},{key: "country", value: "india"},{key: "state", value: "Delhi"}]
    
var myObj={};
for (var item of obj){
    myObj[item.key]=item.value
} 
console.log(myObj)

将输出

{name: "jack", age: 10, country: "india", state: "Delhi"}

答案 2 :(得分:1)

您可以为此使用reduce

var input = [
    {key: "name", value: "jack"},
    {key: "age", value: 10},
    {key: "country", value: "India"},
    {key: "state", value: "Delhi"},
]
var output = input.reduce((r,{key,value}) => ({[key]:value,...r}),{})
console.log(output)

输出

{ state: 'Delhi', country: 'India', age: 10, name: 'jack' }

解决方案使用

答案 3 :(得分:0)

我认为您想要这样...

var obj = [
{key: "name", value: "jack"},
{key: "age", value: 10},
{key: "country", value: "india"},
{key: "state", value: "Delhi"}
];
let tempObject = {};

for (let c of obj) {
   tempObject[c.key]= c.value;
}

console.log(tempObject);