我使用可以歸結爲這樣的一個過程動態構建對象的數組的數組中值:試驗對象
//Objects Array
var objects = [];
//Object Structure
var object1 = {"id":"foobar_1", "metrics":90};
var object2 = {"id":"some other foobar", "metrics":50};
objects[0] = object1;
objects[1] = object2;
(放話稱備案,如果你能想到的更好的方式來動態地嵌套數據,以便我可以通過objects[i].id
來訪問它)
最終會有比上面更多的邏輯,但它只是沒有寫入。只需說「object1」和「object2」部分實際上將在迭代器中。
在該迭代器中,我想在將另一個對象添加到數組之前檢查ID的存在。例如,如果我已經有一個ID爲"foobar_1"
的對象,而不是將新成員推送到該陣列,我只是想增加它的"metrics"
值。
如果我沒有處理一個對象數組,我可以使用inArray
來查找「foobar_1」(一個jQuery實用程序)。但是這不會考慮對象的價值。我看到它的方式,我有兩種選擇:
保留一個單獨的簡單數組的ID。因此,我只是簡單地檢查
inArray
(或普通的JS等價物),而不是僅依賴於objects
數組,因此僅爲此目的使用了一個簡單的「objectIDs」數組。迭代通過我現有的數據對象和我
"foobar_1"
針比較各objects[i].id
草垛
我覺得#1肯定是更有效的,但我不禁懷疑,如果我失去了一個功能,將爲我做這項工作。我錯過了#3,4或5選項! CPU消耗有點重要,但我也對那些使代碼不那麼冗長的函數感興趣,無論它們是否更加有效。
你爲什麼不做一個大哈希出來(而不是數組)? – 2012-03-13 16:59:37
@SergioTulentsev誠實的事實是,我從來沒有機會使用散列,所以我在理論,最佳實踐或語法方面沒有任何知識。我不介意打破我的舒適區,但我必須教自己。 ;-) – 2012-03-13 17:09:40
查看@ jfriend00的答案。這就是我正在談論的。 – 2012-03-13 17:10:31