【问题标题】:Convert the javascript object into different format将 javascript 对象转换为不同的格式
【发布时间】:2016-05-06 08:55:06
【问题描述】:

请原谅我不知道该怎么做。我想我们必须使用地图功能,但我不明白。

这是我的对象“数据”。

data
 [0]:
    name: 'Alex'
    sex: 'Male'
    new_joinee: false
 [1]:
    name: 'Anna'
    sex: 'female'
    new_joinee: true
 [2]:
    name: 'lester'
    sex: 'Male'
    new_joinee: true

我想把上面的对象转换成这种形式

data
name: 'Alex', 'Anna', 'lester'
sex:  'Male', 'Female','Male'
new_joinee: false,true,true

谁能告诉我如何实现这一目标。

【问题讨论】:

  • 您想重新格式化对象或想在 UI 上以不同的方式显示它?
  • @Daniel_L- 我检查了 map、reduce 和 filter 函数,但没有找到解决方法。
  • @PankajParkar- 我需要重新格式化它才能正确显示在 ag-grid 中。
  • 蛮力:只需迭代对象并重新格式化它。

标签: javascript angularjs loops object dictionary


【解决方案1】:
//Input data
var data = [
  {name: 'Alex', sex: 'Male', new_joinee: false}, 
  {name: 'Anna', sex: 'female', new_joinee: true}, 
  {name: 'lester', sex: 'Male', new_joinee: true}
];

//Initialize the output object
out = {};
for(var k in data[0]) {
   out[k] = [];
}

//Collect data from all input objects
data.forEach(function(item){
   for(var k in item) {
     out[k].push(item[k]);
   }
});

结果:

out == 
{ name: [ 'Alex', 'Anna', 'lester' ],
  sex: [ 'Male', 'female', 'Male' ],
  new_joinee: [ false, true, true ] }

【讨论】:

    【解决方案2】:

    如果这是您的初始数据:

    var initialData = 
    [
        {name: 'Alex', sex: 'Male', new_joinee: false}, 
        {name: 'Anna', sex: 'female', new_joinee: true}, 
        {name: 'lester', sex: 'Male', new_joinee: true}
    ];
    

    您可以通过以下方式将数据转换为其他内容:

    var transformed = {
        name: [],
        sex: [],
        new_joinee: []
    };
    
    initialData.forEach(function (element) {
        transformed.name.push(element.name);
        transformed.sex.push(element.sex);
        transformed.new_joinee.push(element.new_joinee);
    });
    

    结果

    {
        name: ['Alex', 'Anna', 'lester'],
        sex: ['Male', 'female', 'Male'],
        new_joinee: [false, true, true]
    }
    

    【讨论】:

      【解决方案3】:

      如果你的项目中有下划线:

      var keys = _.keys(myObj)
      var foo = {
        name: _.pick(myObj, 'name'),
        sex: _.pick(myObj, 'sex'),
        newJoinee:_.pick(myObj, 'new_joinee')
      }
      
      _.each(keys, function(key) { console.log(key + ' ' + foo[key].join(', ')) })
      

      【讨论】:

        【解决方案4】:

        我假设你的数据是一个对象数组

        var data = parse(data)
        
        function parse(data){
          var parsedData = { name: '', sex: '', new_joinee: ''};
          data.forEach(function(item){
            parsedData.names += item.name;
            parsedData.sex += item.sex;
            parsedData.new_joinee += item.new_joinee;
        
           });
         return parsedData;
        }
        

        【讨论】:

        • 嗨 Zohaib-我收到一条错误消息,指出 data.forEach 不是函数
        • 对不起,我覆盖了那个变量,也忘了在函数定义中添加一个参数
        猜你喜欢
        • 2019-07-28
        • 1970-01-01
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多