【问题标题】:Combining inner json array with space and outer with newline将内部json数组与空格结合,将外部与换行符结合起来
【发布时间】:2017-01-04 10:03:23
【问题描述】:

我有一个数组定义为,

var array = [[
    ["a"],
    ["t"]
], [
    ["b"],
    ["t"]
], [
    ["c"],
    ["t"]
]]

想要的输出是:

a t
b t
c t

我试过了

rows.join("\n")

给了

a,t
b,t
c,t

我有一个庞大的列表,它需要高效的代码来映​​射每个内部数组,而不是传统的 for、while 循环

【问题讨论】:

  • 在不使用循环的情况下无法映射数组。即使Array.prototype 方法在内部使用循环。这个输出应该用在哪里?
  • 您的数组似乎无效,请仔细检查您提供的内容。

标签: javascript arrays json google-apps-script


【解决方案1】:

您可以将Array#map 用于带有换行符的外部数组,将Array#join' ' 用于内部数组,将'\n' 用于外部数组。

var array = [
        [["a"], ["t"]],
        [["b"], ["t"]],
        [["c"], ["t"]]
    ],
    result = array.map(function (a) { 
        return a.join(' ');
    }).join('\n');

console.log(result);

ES6

var array = [
        [["a"], ["t"]],
        [["b"], ["t"]],
        [["c"], ["t"]]
    ],
    result = array.map(a => a.join(' ')).join('\n');

console.log(result);

【讨论】:

    【解决方案2】:

    Join 函数不适用于嵌套数组。您可以使用以下方式来处理这种情况。

    var array = [
        [    ["a"],    ["t"]    ], 
        [    ["b"],    ["t"]    ],
        [    ["c"],    ["t"]    ]
        ];
    
        for (var i=0, l=array.length; i<l; i++){
            if (array[i] instanceof Array){
                array[i] = array[i].join(" ");
            }
        }
        var energy = array.join('\n');
    

    【讨论】:

      【解决方案3】:

      所有数组方法都很花哨,但也许你仍然可以简单地做

      var arr = [[["a"],["t"]],
                 [["b"],["t"]],
                 [["c"],["t"]]
                ],
       result = arr.join("\n").replace(/,/g," ");
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 2021-09-28
        • 1970-01-01
        • 1970-01-01
        • 2021-07-15
        相关资源
        最近更新 更多