我有一个具有以下格式的对象数组
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);
答案 0 :(得分:6)
使用当前函数,您只返回键,而不是内部包含键和值的对象。
因此,按照您的逻辑,您只需要添加一个返回对象的返回值,该对象的内部有Object.key
和Object.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);