如何在对象数组中分离每个对象的键和值-Javascript

时间:2019-07-24 12:46:59

标签: javascript arrays object ecmascript-6

我有一个具有以下格式的对象数组

var obj = [{
  "a": 1
}, {
  "b": 2
}, {
  "c": 3
}];

想要从该对象数组内的每个对象中分别提取键和值到新数组中

类似这样的事情: [{"key:"a","val:"1"],{"key":"b","val":"2"},{"key": "c","val":"3"]}

尝试了以下方法,但不起作用:

var obj = [{
  "a": 1
}, {
  "b": 2
}, {
  "c": 3
}];

const result = obj.map(value => Object.keys(value)[0]);
console.log(result);

3 个答案:

答案 0 :(得分:6)

使用当前函数,您只返回键,而不是内部包含键和值的对象。 因此,按照您的逻辑,您只需要添加一个返回对象的返回值,该对象的内部有Object.keyObject.value

请参见下面,这就是您要寻找的东西吗?

var arrayObj = [
  {
  "a": 1
  }, 
  {
    "b": 2
  }, 
  {
    "c": 3
  }
];

const result = arrayObj.map((obj) => {  
  return {
      key: Object.keys(obj)[0], 
      val: Object.values(obj)[0]
    }
});
console.log(result);

您还可以使用Object.entries(obj)[0],如您在 Anjaneyulu Batta 答案中所见。

答案 1 :(得分:3)

我们必须使用Object.keys属性来实现它。尝试以下代码

var obj = [{
  "a": 1,
}, {
  "b": 2
}, {
  "c": 3
}];

const result = obj.map(value => {
  let [key, val] = Object.entries(value)[0];
  return {key, val}
});

console.log(result)

答案 2 :(得分:1)

您可以将Array.flatMap()Object.entries()一起使用,以将对象数组转换为条目数组。然后map进入对象的每个条目:

const arrayObj = [{ "a": 1 }, { "b": 2 }, { "c": 3 }];

const result = arrayObj
  .flatMap(Object.entries) // convert to an array of entries
  .map(([key, val]) => ({ key, val })); // convert each entry to an object

console.log(result);