2011-10-28 42 views
1

我有在it..How對象的多維數組我可以將其壓平如何扁平化包含對象多維數組在javascript

myarr[0] =[{"name":"john","age":"50","location":"san diego"} 
      ,{"name":"jane","age":"25","location":"new york"} 
      ,{"name":"susane","age":"10","location":"los angeles"}  
       ]; 
myarr[1] =[{"smoker":"yes","drinker":"no","insured":"no"} 
      ,{"smoker":"no","drinker":"no","insured":"yes"} 
      ,{"smoker":"no","drinker":"yes","insured":"no"}  
       ]; 
myarr[1] =[{"status":"married","children":"none"} 
      ,{"status":"unmarried","children":"one"} 
      ,{"status":"unmarried","children":"two"}  
       ]; 
+0

弄平裝置弄平多維數組--make的它一個維陣列 - 我的意思是,抱歉混亂。例如我的數組包含所有對象的升序。 – learner

+0

查看'concat' [here](http://www.hunlock.com/blogs/Mastering_Javascript_Arrays)。 –

回答

1

我想這是你想要做什麼。

首先,你想要一個簡單的輔助函數合併兩個對象:排序

var flat = [ ]; 
for(var i = 0; i < myarr.length; ++i) 
    for(var j = 0; j < myarr[i].length; ++j) 
     flat[j] = merge(flat[j], myarr[i][j]); 

然後它:

function merge(a, b) { 
    a = a || { }; 
    for(var k in b) 
     if(b.hasOwnProperty(k)) 
      a[k] = b[k]; 
    return a; 
} 

然後,你可以通過你的數組的數組循環合併的對象:

flat.sort(function(a, b) { 
    a = a.location; 
    b = b.location; 
    if(a < b) 
     return -1; 
    if(a > b) 
     return 1; 
    return 0; 
}); 

演示(在您的JavaScript控制檯打開時運行):http://jsfiddle.net/ambiguous/twpUF/

參考文獻:

+0

非常感謝 – learner

相關問題