2015-04-01 75 views
2

我有一个数组,并希望将其转换为另一个结构。javascript |数组转换

我的数组:

["DZ|47", "DZ|48", "DZ|53", "DZ|57", "AR|202", "AR|206", "AR|213", "BY|484", "BY|485", "BY|487"] 

而且我想这个转换为:

{"DZ":[47,48,53,57],"AR":[202,206,213],"BY":[484,485,487]} 

我开始写代码,但是......接下来呢?

$.each(arr, function(index, value) { 
    var idx = value.split('|'); 
    //arr2[idx[0]] = arr3; 
}); 

谢谢!

回答

3
var result = {}; 
$.each(arr, function(index, value) { 
    var idx = value.split('|'); 
    if(!result[idx[0]]){ 
     result[idx[0]] = []; 
    } 
    result[idx[0]].push(idx[1]); 
}); 
1

您可以使用Array.prototype.reduce方法:

var data = ["DZ|47", "DZ|48", "DZ|53", "DZ|57", "AR|202", "AR|206", "AR|213", "BY|484", "BY|485", "BY|487"]; 
 

 
var result = data.reduce(function(prev, curr) { 
 
    var split = curr.split('|'); 
 
    if (!prev[split[0]]) prev[split[0]] = []; 
 
    prev[split[0]].push(split[1]); 
 
    return prev; 
 
}, {}); 
 

 
alert(JSON.stringify(result));