【发布时间】:2021-09-24 01:57:31
【问题描述】:
数据:
array1 = [{"location": "The Green Lion", "postcode": "E1 6QE"}, {"location": "Diners Inn", "postcode": "E6 5FD"}]
array2 = [{"location": "Green Lion", "postcode": "E1 6QE"}, {"location": "Diner's Inn", "postcode": "E6 5FD"}]
array3 = [{"location": "The Green Lion", "postcode": "E1 6QE"}, {"location": "Diner Inn", "postcode": "E6 5FD"}]
//array1 size - 350 | array2 size - 544 | array3 size - 88
我正在使用fuzzy 比较函数来查找数组中的相似元素。我面临的问题是,我目前的实现方式是将 3 个数组组合成 1 个数组,然后循环两次,然后模糊比较 location。
combined.forEach(function (x) {
combined.forEach(function (y) {
if (fuzz.token_sort_ratio(x.location, y.location) > 80) {
//Logic
}
});
});
有没有比嵌套 for 循环更有效的方法来实现这一点?组合数组大小为 958,这意味着运行了 917,764 次迭代,这似乎不是实现这一目标的有效方法,但因为 location 的值并不总是保证相同,我不能使用.find() 函数(或者我可以吗?)。
【问题讨论】:
标签: javascript node.js arrays performance logic