我有很多像json对象。我希望能够通过例如lookup["22"]
然后得到下面的对象。但是,我不确定最好的方法是什么,效果如何?
var data = [
{
"id": "22",
"Email": "a@test.com"
},
{
"id": "11",
"Email": "test@test.com"
}
],
答案 0 :(得分:1)
使用Array.prototype.find(),您可以循环数组并找到第一项匹配条件。这样你就可以编写一个函数来进行查找(使用ES6语法):
const lookup = id => data.find(d => d.id === id);
lookup('22');
并非所有环境都支持它,但它应该在节点中工作。
答案 1 :(得分:1)
我假设您拥有内存中的JSON对象,而不是以允许您创建lookup index的方式存储。
天真的解决方案是使用Array.prototype.find,它将遍历整个集合,在每次查找时给我们O(n)时间。但是,如果您可以构建如何格式化此JSON,那么从长远来看,您可能会节省一些时间。如果可以保证唯一ID,请考虑创建这样的结构:
const data = {
"22": {
"id": "22",
"Email": "a@test.com"
},
"11": {
"id": "11",
"Email": "test@test.com"
}
}
然后你可以像上面所示那样做:data[id]
。如果您从刚性API获取此数据,那么如果您进行多次查找而手动变更数据可能仍然值得,因为索引的成本与查找单个文档的时间相同。