【发布时间】:2017-12-09 01:50:13
【问题描述】:
我正在使用 Node v8.1.3
我有一个 JSON 数组如下:
[
{
"id":99,
"name": "ABC"
},
{
"id": 187,
"name": "AXZ"
}
]
这个数组中有大约 213000 个 e=objects。
另外,对象中的ids 没有任何顺序或模式。
现在,我想查找特定的id 是否与数组中的任何 ID 匹配?最快的等待时间是什么?
我试过了
isIdValid(id) {
console.log(id)
return this.list.filter((elem) => {
return elem.id == id
}).length > 0;
}
但这需要超过 4 秒。
【问题讨论】:
-
每个条目的这些 id 是唯一的,还是可以有 id 重复?
-
如果您需要多次执行此检查,那么首先从 JSON 中提取 id 并将它们放入“普通”数组中可能更有意义......这样您就可以使用 indexOf 等内置方法。然后,您还可以尝试查看首先订购该数组是否会带来任何额外的性能提升。
-
@FreemanLambda 每个条目唯一
-
我会建议一个小的有条件的改进。而不是
Array.filter使用Array.some。 Filter 无论如何都会遍历整个数组,而 Some 可能会在找到匹配项时提前退出。 -
虽然极大地提高了 JSON 中元素的性能,但它降低了列表下方元素的性能@FreemanLambda
标签: arrays json node.js search