有 2 个数组rows_1, rows_2,并且有一个查找字段匹配的函数:
compare(rows_1, rows_2) {
rows_1.forEach(row_1 => {
rows_2.forEach(row_2 => {
row_1['checked'] = row_1.id === row_2.sub.id;
});
});
}
我有 2 个嵌套循环。
如果没有双循环或 O(n2),这不能以某种方式更好地重写吗?
更新
对象结构:
rows_1 = [ {id: '1', title: '...'}, {id: '2', title: '...'}, ];
rows_2 = [ {sub: {id: '1', title: '...'}}, {sub: {id: '2', title: '...'}} ];
你确定你的代码有效吗?
下面是一个例子
相差10倍左右。
将
max其设置为 10 并查看代码输出的内容在你的代码之后
经过比较快
无论如何尝试一下
Set,我知道它的速度取决于实现,但最好这个类应该基于哈希表或二叉树,这将给出复杂度 O (1) 或 O (log n) vs. O ( n) 用于常规数组。在我的 chrome 中,选项的Set工作速度比数组(一千个元素)上的选项快 2-3 倍:测试的代码从附近的答案中被厚颜无耻地窃取了