我怎样才能从对象的数组获取对象

时间:2019-02-02 15:13:23

标签: javascript arrays object javascript-objects

在入口处,我有一个带有对象的数组。 将传入的对象数组转换为对象的函数。 使用该函数,我需要将其转换为这种形式。

var array = [ 
   { k1:v1 },
   { k2:v2 },
   { k3:v3 }
];

function arrayToObject(array) { return object }

var object = { 
    v1: k1,
    v2: k2,
    v3: k3, 
}

7 个答案:

答案 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))