在入口处,我有一个带有对象的数组。 将传入的对象数组转换为对象的函数。 使用该函数,我需要将其转换为这种形式。
var array = [
{ k1:v1 },
{ k2:v2 },
{ k3:v3 }
];
function arrayToObject(array) { return object }
var object = {
v1: k1,
v2: k2,
v3: k3,
}
答案 0 :(得分:2)
您可以任务Object.assign
并散布反转的物体。
var array = [ { k1: 'v1' }, { k2: 'v2' }, { k3: 'v3' }],
object = Object.assign(...array.map(o => Object
.entries(o)
.reduce((r, [k, v]) => Object.assign(r, { [v] : k }), {})
));
console.log(object);
答案 1 :(得分:1)
使用forEach
循环
var array = [
{ k1:'v1' },
{ k2:'v2' },
{ k3:'v3' }
]
function a()
{
var obj={};
array.forEach((e)=>obj[e[Object.keys(e)[0]]]=Object.keys(e)[0])
console.log(obj)
}
a();
答案 2 :(得分:1)
您可以使用Object.entries()
和.reduce()
方法来获得所需的输出:
const array = [
{ k1:'v1' },
{ k2:'v2' },
{ k3:'v3' }
];
const obj = Object.entries(
array.reduce((r, c) => Object.assign(r, c), {})
).reduce((r, [k, v]) => (r[v] = k, r), {});
console.log(obj);
答案 3 :(得分:1)
Array.reduce
并在每个数组元素上使用Object.keys
。
var array = [
{ k1: 'v1' },
{ k2: 'v2' },
{ k3: 'v3' }
]
var obj = array.reduce((obj, item) => {
Object.keys(item).forEach(key => obj[item[key]] = key)
return obj
}, {})
console.log(obj)
答案 4 :(得分:0)
还有一个:
const result = {};
for(const [[key, value]] of array.map(Object.entries))
result[value] = key;
答案 5 :(得分:-1)
我不确定为什么其他答案会尽可能地巧妙。
我发现这个更具有可读性。我没有使用reduce,因为我发现这个词具有误导性。一个简单的forEach更有意义我
const array = [
{ k1:'v1' },
{ k2:'v2' },
{ k3:'v3' }
];
let newObj={};
array.forEach((obj) => {
let key = Object.keys(obj)[0];
newObj[obj[key]]=key;
})
console.log(newObj)
答案 6 :(得分:-2)
您的答案..
var array = [
{ k1: v1 },
{ k2: v2 },
{ k3: v3 }
];
function arrayToObject(array) {
obj = {};
for (i = 0; i < array.length; i++) {
o = array[i];
key = Object.keys(o)[0];
obj.key = o.key;
}
return obj;
}
console.log(arrayToObject(array))