javascript最好的方法是通过分隔符将数组拆分为两个

时间:2014-04-21 16:13:01

标签: javascript arrays function split delimiter

我在javascript中有一个数组:

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

我想要

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

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

因为"_"分隔符。

有没有办法在不使用for循环语句的情况下完成任务?

4 个答案:

答案 0 :(得分:2)

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

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

今天可以在Firefox中使用,也可以在其他浏览器中使用,希望不会太遥远。

答案 1 :(得分:1)

像这样的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);

答案 2 :(得分:1)

这是一个适用于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];

答案 3 :(得分:1)

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]);
});