如何访问索引数组的键

时间:2018-10-19 12:56:55

标签: javascript

说我下面有一个数组,我想检索索引对象内的键,这样我就可以得到像这样的数组["prop1", "prop2", "prop3", "prop3"]

const testArray =  [
    {
      0: {
        prop1: "sdsd", 
        prop2: "ssdsd"
      }
    },
    {
      1: {
        prop3: "sdsd", 
        prop4: "sddd"
      }
    }
 ]

5 个答案:

答案 0 :(得分:1)

使用reduce和concat:

const testArray =  [
    {
      0: {
        prop1: "sdsd", 
        prop2: "ssdsd"
      }
    },
    {
      1: {
        prop3: "sdsd", 
        prop4: "sddd"
      }
    }
 ]

const keys = testArray.reduce((arr, curr, index) => 
                 arr.concat(Object.keys(curr[index])),[])

console.log(keys)
// ["prop1", "prop2", "prop3", "prop4"]

答案 1 :(得分:0)

您可以使用值的键在数组上进行映射

const testArray =  [
    {
      0: {
        prop1: "sdsd", 
        prop2: "ssdsd"
      }
    },
    {
      1: {
        prop3: "sdsd", 
        prop4: "sddd"
      }
    }
 ]
 
 const keys = testArray
                .map(e => Object.keys(...Object.values(e)))
                .flat();
                
 console.log(keys);


请注意,flat()目前尚处于试验阶段,因此您可能需要使用reduce或大约平面来简化数组...

答案 2 :(得分:0)

@bambam给出了带有“ map”的解决方案,这一点更加清楚。 您也可以使用“减少”,如下所示。

testArray.reduce((arr, d) => 
            (arr.push(
                   Object.entries(d).map(([, l]) => Object.keys(l))
                   )
             , arr) 
            ,[]).flat(2)

答案 3 :(得分:0)

使用forEach的一种解决方案

const testArray =  [
    {
      0: {
        prop1: "sdsd", 
        prop2: "ssdsd"
      }
    },
    {
      1: {
        prop3: "sdsd", 
        prop4: "sddd"
      }
    }
 ];
 
 var arr = [];
 
 testArray.forEach((data, index) => {
    let tempArr = Object.keys(data[index]);
    arr = arr.concat(tempArr);
 })
 
 console.log(arr);

答案 4 :(得分:0)

var map = [null, 'dG', 'h2', 'gF', 'pz', 'V0'];

function getText (obj, key) {
  // if (obj[key]) {
  //   return obj[key];
  // } else {
  //   return null;
  // }
  return obj[key] ? obj[key] : null;
}

console.log(getText(map, 1));
console.log(getText(map, 5));
console.log(getText(map, 100));