我試圖構建的JavaScript數組,但我不知道正確的方式去做,或者如果這種類型的數組,甚至有可能...需要協助建立複雜的JS對象
比方說,我對數組中的每個項目都有一個鍵,以'a'開始並以'z'結尾。對於每個項目,數組鍵將與另一個多維數組相對應。這些新的多維數組是一系列座標(x和y)。原始數組中的每個項目可以有多組座標。例如:
我如何構建使用JavaScript這樣的陣列?什麼是正確的語法?
我試圖構建的JavaScript數組,但我不知道正確的方式去做,或者如果這種類型的數組,甚至有可能...需要協助建立複雜的JS對象
比方說,我對數組中的每個項目都有一個鍵,以'a'開始並以'z'結尾。對於每個項目,數組鍵將與另一個多維數組相對應。這些新的多維數組是一系列座標(x和y)。原始數組中的每個項目可以有多組座標。例如:
我如何構建使用JavaScript這樣的陣列?什麼是正確的語法?
對於數據您提供:
var arr = {
a: [[20,15],[25,17],[10,45]],
b: [[10,33],[12,2],[14,9],[72,103],[88,12]],
c: [[2,2],[41,21]],
d: [[0,0],[21,2],[44,44],[19,99],[1,1],[100,100]],
e: [[1,1],
f: [[3,40],[41,86]]
}
你想第一個結構,鍵陣列,是不是在JavaScript中的數組 - 它是一個對象。對象包含鍵值對。在這種情況下,這些值是數組,而這些數組中的對象本身就是數組。
如果您是從另一種定義'常規'多維數組的語言來的話,這裏需要注意的一個重要的事情是沒有期望或者保證這個結構的'行'都是相同的長度。
只需向您的列表添加另一個可能的選項,與@ SMcCrohan的答案相同,混合對象和數組。
var coords = {
a: [{
x: 20,
y: 15
},
{
x: 25,
y: 17
}],
b: [{
x: 10,
y: 30
}],
....
};
這是假設你總是會使用座標x
和y
,這意味着你可以訪問像這樣的價值觀:
var value1 = coords.a[1].x; // 25
var value2 = coords.b[0].y; // 30
這樣做,而不是使用元組數組作爲最內層結構,將導致更具可讀性的代碼。 'coords.a [2] .x'比'coords.a [2] [0]'更直接可讀。 (希望我能想到它!) –
但是當然,一個寫得很好的'getCoord'函數可能更具可讀性:'getCoord('a',2,'x')'。 –
同意,斯科特。儘管這兩者都是好的。這樣,如果你把一個內部結構拉出來('var coord = coords.a [0]'),你就留下了一個對象,它仍然帶有一些意圖。 –
這是一個目標......不是一個數組 – rafaelcastrocouto
正確的。 OP要求一個'數組'鍵'a','b','c'...等。在某些語言中,這將是一個數組。在Javascript中,它不是。我認爲,實施OP所要求的行爲比遵守他們使用的措辭更重要,因爲當他們看起來對語言來說是相當新的時候。 –
S McCrohan是正確的,這是我正在尋找的行爲,我很高興你能明白我的意思。 –