【问题标题】:javascript best way to split an array into two by delimiter [closed]javascript通过分隔符将数组分成两个的最佳方法[关闭]
【发布时间】:2014-04-21 16:13:01
【问题描述】:

我在 javascript 中有一个数组:

a=["jhgkhjgk3j_jhgkjhgk","8797823_0120120", "aaaaa_bbb"]

我想得到

b=["jhgkhjgk3j","8797823", "aaaaa"]

c=["jhgkjhgk","0120120", "bbb"].

因为"_" 分隔符。

有什么方法可以在不使用for 循环语句的情况下完成这项工作?

【问题讨论】:

  • 您对for 声明有何看法?
  • 我假设最后一个数组应该是c,而不是b
  • @talemyn 谢谢你的指点。错字已修复。
  • @cookie monster for 语句表示for循环语句。谢谢。
  • @Haradzieniec:当然。还有什么意思?无论如何,在某种程度上需要某种循环,但如果由于某种原因您不想专门使用for 循环,那么您可以很容易地使用Array.prototype.reduce

标签: javascript arrays function split delimiter


【解决方案1】:

只是为了好玩,这里有一个 ECMAScript 6 解决方案。

let [b, c] = a.reduce(function(res, s, i) {
    [res[0][i], res[1][i]] = s.split("_");
    return res;
}, [[],[]]);

现在可以在 Firefox 中使用,希望在不久的将来也可以在其他浏览器中使用。

【讨论】:

  • 无法在 Chrome 中使用,类似于方案样式。
  • @Tim:当然不是。 ECMAScript 6 甚至还没有发布。它今天可以在 Firefox 中使用。
【解决方案2】:
var a= ["jhgkhjgk3j_jhgkjhgk","8797823_0120120", "aaaaa_bbb"],
    b = [],
    c = [];

a.forEach(function (value, key) {
    a[key] = value.split('_');
    b.push(a[key][0]);
    c.push(a[key][1]);
});

【讨论】:

    【解决方案3】:

    这是一个可以在 Chrome 中运行的版本。它还使用reduce

    var result = a.reduce(function(result, current, i) {
        var parts = current.split(/_/);
        result[0].push(parts[0]);
        result[1].push(parts[1]);
    
        return result;
    }, [[], []]);
    
    var b = result[0];
    var c = result[1];
    

    【讨论】:

    • 诅咒你更快的打字技巧! :D
    【解决方案4】:

    类似 ES5 的东西:

     var a=["jhgkhjgk3j_jhgkjhgk","8797823_0120120", "aaaaa_bbb"];
    
        var items = a.reduce(function(a,b){
            a[0].push(b.split('_')[0]);
            a[1].push(b.split('_')[1]);
            return a;
        },[[],[]]);
    
        console.log(items);
    

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      相关资源
      最近更新 更多