我在javascript中有一个数组:
a=["jhgkhjgk3j_jhgkjhgk","8797823_0120120", "aaaaa_bbb"]
我想要
b=["jhgkhjgk3j","8797823", "aaaaa"]
和
c=["jhgkjhgk","0120120", "bbb"].
因为"_"
分隔符。
有没有办法在不使用for
循环语句的情况下完成任务?
答案 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]);
});