2015-04-01 106 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));