我知道这里有很多答案,大多数人都建议通过对象循环,返回你需要的东西,但我不确定这是否是最好的方法,无论如何。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