获取JavaScript对象键列表卷.2

Mag*_*äru 6 javascript arrays object

这是原始问题:获取JavaScript对象键列表

但如果情况稍微复杂一点,如:

var obj = [
   { key1: 'value1' },
   { key2: 'value2' },
   { key3: 'value3' },
   { key4: 'value4' }
]
Run Code Online (Sandbox Code Playgroud)

那你怎么得到这样的钥匙?

[key1,key2,key3,key4]
Run Code Online (Sandbox Code Playgroud)

kin*_*ser 15

你可以使用Object.keys和的混合Array#map.

let obj = [
   { key1: 'value1' },
   { key2: 'value2' },
   { key3: 'value3' },
   { key4: 'value4' },
];

let keys = [].concat(...obj.map(Object.keys));

console.log(keys);
Run Code Online (Sandbox Code Playgroud)


Dij*_*Dij 7

您可以在obj中获取每个对象的键,然后使用concat()它将其添加到结果数组中.

    var obj = [
       {
           key1: 'value1'
       },
       {
           key2: 'value2'
       },
       {   
           key3: 'value3'
       },
       {   
           key4: 'value4'
       }
    ]
var keyList = [];
obj.forEach(function(o){
    keyList = keyList.concat(Object.keys(o));
});
console.log(keyList);
Run Code Online (Sandbox Code Playgroud)


Pra*_*lan 5

你可以使用Array#reduce方法实现它.

var obj = [{
  key1: 'value1'
}, {
  key2: 'value2'
}, {
  key3: 'value3'
}, {
  key4: 'value4'
}];

var res = obj
  // iterate over the array
  .reduce(function(arr, o) {
    // get keys and push into the array
    [].push.apply(arr, Object.keys(o));
    // return the araray reference
    return arr;
    // set initial value as an empty array
  }, []);

console.log(res);

// ES6 alternative
var res1 = obj.reduce((arr, o) => (arr.push(...Object.keys(o)), arr), []);

console.log(res1);
Run Code Online (Sandbox Code Playgroud)