【问题标题】:Flatten javascript array with Multi-dimensional data用多维数据展平javascript数组
【发布时间】:2014-02-11 06:35:31
【问题描述】:

如何在 javascript 中将其展平?

[
    [ task: 2 ],
    [ status: 'REFUND' ],
    [],
    [ amount: 872.2 ] 
]

类似于:

[task: 2, status: 'REFUND', amount: 872.2]

尝试了几个选项,包括 Array.prototype.reduce() 但对我不起作用。

【问题讨论】:

  • 你的意思是 { task : 2 } 等等,对吧?
  • 没有tomdemuyt。我从 array.push() 得到上面,像这样:var a = [];变量 b = [];变量 c = [];一个[任务] = 2; b[状态] = '退款'; c.push(a) c.push(b) 出于某种原因,我不能将它们放在一个变量中。它们来自不同的功能。

标签: javascript arrays node.js object


【解决方案1】:

请检查这个。

var a = [], b = [],c = [],d=[]; 
 a['task'] = 2;
 b['status'] = 'REFUND';
 d['amount']= 872.2

 c.push(a); 
 c.push(b);
 c.push(d) 
 var arr = [];
console.log(c)

for(var key in c){
    //console.log(Object.keys(c[key]),c[key][Object.keys(c[key])]);
     arr[Object.keys(c[key])]=c[key][Object.keys(c[key])];
   }

 console.log(arr)  // please see the console.

这里是plunker

【讨论】:

    【解决方案2】:

    你可以使用 underscore.js

    var u = require('underscore');
    u.reduce(a, function(memo, item) { 
        var o = {}; 
        u.each(memo, function(v, k) { 
            o[k] = v; 
        }); 
        u.each(item, function(v, k) { 
            o[k] = v; 
        }); 
        return o;
    });
    


    输入:
    [
        { task: 2 },
        { status: 'REFUND' },
        {},
        { amount: 872.2 }
    ]
    

    输出:

    { 
       task: 2,
       status: 'REFUND',
       amount: 872.2 
    }
    

    【讨论】:

    • 没有下划线有flatten方法吗?
    • Underscore 确实有一个 flatten 方法。但是在这种情况下你不能使用它。如果它是数组的数组,它会起作用。但由于它是一个对象数组,_.flatten 会返回输入本身。
    【解决方案3】:

    您的语法无效;对象字面量之外不允许有:

    var arr = [
      [{task: 2}],[{status: 'REFUND'}],[],[{amount: 872.2}]
    ];
    

    要展平您的阵列,请使用多功能reduce

    var result = arr.reduce(function(a,b) {
      return a.concat(b)
    }); //result.length === 3
    

    您的结果包含 3 个元素,因为 [] 被过滤掉了

    reduceECMAScript 第 5 版 的一部分。确保您的浏览器支持它。

    【讨论】:

      【解决方案4】:

      您可以使用join()

      一个好的起点:

      array[0] = array[0].join(", ");
      

      【讨论】:

        猜你喜欢
        • 2012-08-27
        • 2020-06-06
        • 1970-01-01
        • 2023-03-26
        • 2011-09-05
        • 2010-11-22
        • 1970-01-01
        相关资源
        最近更新 更多