我知道這裏有很多答案,大多數人都建議通過對象循環,返回你需要的東西,但我不確定這是否是最好的方法,無論如何。Javascript - 通過鍵搜索對象
什麼我是陣列entries
引用到另一陣列people
(與id
和name
)由person_id
projects
和(與id
和name
)由project_id
。
我需要的是能夠在entries
的循環內訪問項目和特定id
的人,因此我可以獲得他們的名字。做別人的建議我會循環people
和projects
在每個entries
的激怒中,這看起來好像很糟糕的循環。
所以我想我會做的東西我稱之爲「哈希表」來自people
和projects
上的init,這意味着相當多創建一個新的對象people_hashtable
和projects_hashtable
,其中關鍵將是ID
所以
[
{
"id": "8",
"name": "John Doe"
}
]
將成爲
{
"8": {
"name": "John Doe"
}
}
這樣我會很容易接觸到的南e沒有循環所有的時間,同時仍然保持舊的陣列與它的原始順序(這就是爲什麼我不是直接從服務器輸出它,你不能完全訂購一個對象,我同時使用people
和projects
在一個選擇框,需要按名稱排序)。
我在做對吧?有更好的方法嗎?還是應該完全忘記這一點,並堅持按照其他問題中建議的搜索循環?
我試圖在服務器和客戶端儘可能高效。
這很有趣!是的,我想這比複製整個對象要好。 – foxx 2013-04-10 09:49:37
雖然減少似乎是ecma5的東西,所以我可能必須堅持一個很好的老來構建查找表 – foxx 2013-04-10 09:54:06
ES5在所有主流和現代瀏覽器中都受支持;加上ES6正在開發中。如果您必須支持IE8等舊版瀏覽器,那麼我建議始終使用[ES5 shim](https://github.com/kriskowal/es5-shim)。在[MDN](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/Reduce)上只能找到'reduce' – ZER0 2013-04-10 10:02:13