【问题标题】:How to get the keys of an array of object? - Javascript [duplicate]如何获取对象数组的键? - Javascript [重复]
【发布时间】:2019-02-07 12:01:49
【问题描述】:

这是我的代码

var inputData = [{
  name: 'Nick',
  achievements: 158,
  points: 14730
}, {
  name: 'Jordan',
  achievements: '175',
  points: '16375'
}, {
  name: 'Ramon',
  achievements: '55',
  points: '2025'
}];


var outputData = inputData.map(function(obj) {
  return Object.keys(obj).sort().map(function(key) { 
    return obj[key];
   });
});

 console.log(JSON.stringify(outputData));

这给出了结果

 [["Nick",158,14730], 
 ["Jordan","175","16375"], 
 ["Ramon","55","2025"]]

期望的输出

 [["name", "achievements", "points"],
 ["Nick", "158", "14730"],
 ["Jordan", "175", "16375"],
 ["Ramon", "55", "2025"]]

基本上我需要这种格式的数据来生成 CSV。所以我将我的对象数组转换为数组数组。数组数组的第一行将包含键,而下一行将包含值。

我不想使用 Lodash 或 Jquery。我正在寻找 Plain Vanilla JS 的解决方案

【问题讨论】:

  • 您已经在使用Object.keys() - 为什么这不起作用?
  • 使用Object.keys(obj) 作为键,使用Object.value(obj) 作为值。

标签: javascript


【解决方案1】:

简单地说:

const outputData = [Object.keys(inputData[0]), ...inputData.map(Object.values)];

不过,你会想要一些.length-check。如果对象是不同的shape,你会得到一些奇怪的结果。

【讨论】:

    【解决方案2】:

    var inputData = [{
      name: 'Nick',
      achievements: 158,
      points: 14730
    }, {
      name: 'Jordan',
      achievements: '175',
      points: '16375'
    }, {
      name: 'Ramon',
      achievements: '55',
      points: '2025'
    }];
    
    
    var outputData = inputData.reduce((acc,obj,i) => {
      if(i == 0) acc.push(Object.keys(obj));
      acc.push(Object.values(obj));
      return acc;
    },[]);
    
     console.log(JSON.stringify(outputData));

    【讨论】:

      【解决方案3】:

      请使用以下代码 -

      var inputData = [{
      name: 'Nick',
      achievements: 158,
      points: 14730
       }, {
      name: 'Jordan',
      achievements: '175',
      points: '16375'
       }, {
      name: 'Ramon',
      achievements: '55',
      points: '2025'
      }];
      
      
      var outputData = inputData.map(function(obj) {
       return Object.keys(obj).map(function(key) { 
      return obj[key];
         });
       });
      outputData.unshift(Object.keys(inputData[0]))
       console.log(JSON.stringify(outputData));
      

      在现有代码中仅添加 outputData.unshift(Object.keys(inputData[0])) 并删除 sort() 方法。

      【讨论】:

        猜你喜欢
        • 2015-09-16
        • 1970-01-01
        • 2018-10-03
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-30
        • 1970-01-01
        相关资源
        最近更新 更多