2013-05-13 147 views
2

我想從一個多維數組這樣創建磁盤陣列:如何從JavaScript數組中創建一個簡單的數組?

var dataItaly = [ 
/*Town  Region City*/ 
    ["Castelspina","Piemonte","Alessandria" ], 
    ["Cavatore","Piemonte","Alessandria" ], 
    ["Cella Monte","Piemonte","Alessandria" ], 
    ["Cereseto","Piemonte","Alessandria" ], 
    ["Cantarana","Piemonte","Asti" ], 
    ["Capriglio","Piemonte","Asti" ], 
    ["Casorzo","Piemonte","Asti" ], 
    ["Albino","Lombardia","Bergamo" ], 
    ["Algua","Lombardia","Bergamo" ], 
    ["Abbiategrasso","Lombardia","Milano" ], 
    ["Agrate Brianza","Lombardia","Milano" ], 
    ["Aicurzio","Lombardia","Milano" ], 
    ["Almese","Piemonte","Torino" ], 
    ["Alpette","Piemonte","Torino" ], 
    ["Alpignano","Piemonte","Torino" ], 
    ["Andezeno","Piemonte","Torino" ], 
    ["Albonese","Lombardia","Pavia" ], 
    ["Albuzzano","Lombardia","Pavia" ], 
    ["Arena Po","Lombardia","Pavia" ], 
    ["Badia Pavese","Lombardia","Pavia" ] 
]; 

這是我的出發點......

var region = "Piemonte" 
// array must appear the city of "Piemonte" 

function createArrayCity (dataItaly, region) { 
var arrayList; 
for (i = 0; i <dataItaly.length i) { 
  if the region === [1] { 
    arrayList [2]. append; 
return arrayList; 
} 
} 
} 

這樣做的內容必須是ArrayList的[亞歷山德里亞,都靈,阿斯蒂。 如果VAR區域=「倫巴第大區」的ArrayList內容爲[貝加莫,米蘭,帕維亞]

+0

傢伙非常感謝您的幫助。對我而言,數組中的迭代仍然是一個艱難的任務。現在我有一個學習基地 – David 2013-05-14 16:31:41

回答

1

我使用.map().filter()會做到這一點:

var result = dataItaly.map(function(e) { 
    return e[1] === region ? e[2] : null; 
}).filter(function(e, i, a) { 
    return e !== null && a.indexOf(e) === i; 
}); 

N.B .:這些方法相當新穎,一些舊瀏覽器可能不支持它們。您應該使用墊片(從herehere)來修復兼容性。

1

您可以使用CONCAT合併數組:

var dataItaly = [ 
    ["Castelspina","Piemonte","Alessandria" ], 
    ["Cavatore","Piemonte","Alessandria" ], 
    ["Cella Monte","Piemonte","Alessandria" ], 
    ["Arena Po","Lombardia","Pavia" ], 
    ["Badia Pavese","Lombardia","Pavia" ] 
]; 
var merged = []; 
merged = merged.concat.apply(merged, dataItaly); 

刪除重複的(如果你想要的)你可以更多信息:

merged = merged.filter (function (v, i, a) { return a.indexOf (v) == i }); 
0

嘗試

function createArrayCity (dataItaly, region) { 
    var arrayList = []; 
    for (i = 0; i <dataItaly.length; i++) { 
     if (dataItaly[i][1] === region && indexOf(arrayList, dataItaly[i][2]) == -1) { 
      arrayList.push(dataItaly[i][2]) 
     } 
    } 
    return arrayList; 
} 

function indexOf(array, obj){ 
    if(typeof array.indexOf == 'function'){ 
     return array.indexOf(obj); 
    } 
    for (i = 0; i <array.length; i++) { 
     if(array[i] == obj){ 
      return i; 
     } 
    } 
    return -1; 
} 


console.log(createArrayCity(dataItaly, 'Lombardia')) 

演示:Fiddle

相關問題