【问题标题】:Getting key of each object inside array of objects into an array: Javascript将对象数组中每个对象的键放入数组中:Javascript
【发布时间】:2019-07-19 09:24:09
【问题描述】:
我有一个格式如下的对象
var obj = [{
"a": 1
}, {
"b": 2
}, {
"c": 3
}];
只想从这个对象数组中的每个对象中提取键到一个新数组中
类似这样的:
["a","b","c"]
尝试了以下方法,但不起作用:
var obj = [{
"a": 1
}, {
"b": 2
}, {
"c": 3
}];
let result = obj.map (({ val }) => val)
console.log(result);
【问题讨论】:
标签:
javascript
arrays
ecmascript-6
【解决方案1】:
通过扩散到Object.assign()合并成单个对象,然后获取key:
var obj = [{"a":1},{"b":2},{"c":3}];
const result = Object.keys(Object.assign({}, ...obj));
console.log(result);
或将Array.flatMap() 与Object.keys() 一起使用:
var obj = [{"a":1},{"b":2},{"c":3}];
const result = obj.flatMap(Object.keys);
console.log(result);
【解决方案2】:
我会 .map 并提取被迭代对象的 Object.keys 中的第一项:
var obj = [{
"a": 1
}, {
"b": 2
}, {
"c": 3
}];
const result = obj.map(inner => Object.keys(inner)[0]);
console.log(result);
【解决方案3】:
你可以使用Object.assign和spread(...)操作符来解决这个问题
var mainObj = [{"a":1},{"b":2},{"c":3},{"23":1},{"32b":2},{"232c":3}];
const allKeys = Object.keys(Object.assign({}, ...mainObj));
console.log(allKeys);