2013-07-29 51 views
3

我通常使用數組來實現可能更適合使用對象的任務。我沒有繼續想知道使用對象來完成任務會更好,而是決定在Stack Overflow上提出問題。什麼時候應該在數組上使用對象,反之亦然?

array = ["James", 17]; 
object = {name:"James", age:17}; 

他們似乎都在語法類似,對我,他們似乎使用時,實現同樣的事情。什麼時候應該在數組上使用一個對象,反之亦然?關於什麼時候我應該使用一個的一般規則?

+1

看看http://stackoverflow.com/questions/688097/objects-vs-arrays-in-javascript-for-key-value-pairs – mguimard

+0

你有什麼想法?如果它不轉換爲CSV,那麼對象通常更適合。 – Bergi

回答

8

當你想要命名鍵(鍵:值對)時使用一個對象,否則使用一個數組。你甚至可以使用數組符號使用對象:

object = {name:"James", age:17}; 
object['name']; // James 

在你的情況下,它看起來就像你在一個人的字段存儲信息。在這裏,使用一個對象是非常合理的,因爲這個鍵標識了你在每個字段中存儲的數據的類型。一個數組是一個簡單的數據列表。

+0

非常感謝。這對我以前的做索引常量的事情來說似乎是一種更好的方式。對象似乎自己做到了。 :d – jskidd3

3

在使用數組的第一個示例中,您正在設置該數組中兩個索引之間的關係。這是令人沮喪的,因爲你的代碼沒有固有的知識,你打算相互關聯。這是在第二行中使用對象的絕佳機會。

考慮的機會,同時使用它們:

var match = {}; 

var peopleProps = { 
    hair: ['brown', 'blonde', 'red'], 
    eyes: ['brown', 'blue', 'green'] 
}; 

var person = { 
    name: 'James', 
    age: '17', 
    hair: 'brown', 
    eyes: 'blue' 
}; 


for(var prop in person) { 
    for(var subProp in peopleProps) { 
     for(var i=0, l=peopleProps[subProp].length; i<l; i++) { 
     if(prop == subProp && person[prop] === peopleProps[subProp][i]) { 
      (match[prop][subProp])? match[prop][subProp]++ : match[prop][subProp] = 1; 
     } 
     } 
    } 
} 

在這裏我們可以看到使用數組來創建映射條件和對象,以關聯的實用性。

2

關鍵是:抽象層次。您需要按照「現實生活」中的方式對數據進行建模。一個數組是一個項目列表,一個對象是一個項目。

相關問題