我正在寻找一种省时的方法来比较数组之间的元素。 我有两个简化的简短示例,说明我的数组可以包含的数据:
let a = ["mushrooms", "bread", "tomato", "sauce"]
let b = ["o", "e", "a"]
我正在使用的数组的长度超过500 000个元素。在我的数组中,我将比较数组b
中的每个元素与数组a
中的每个元素,并据此计算结果。 (即检查数组O
中的单词有多少a
个并存储结果)但是,我目前正在使用两个循环-一个循环a
和一个嵌套循环{ {1}}。
我的目标是提高效率,因为我认为我的算法远非高效。我很想了解可以更好地解决此问题的常见做法。
答案 0 :(得分:0)
另一种方法是使用带有空白的replace关键字并比较长度
let a = ["mushrooms", "bread", "tomato", "sauce"];
let b = ["o", "e", "a"];
let c = [];
for(var i=0; i< b.length; i++)
{
c.push(new RegExp(b[i],'g'));
}
for(var i=0; i < a.length; i++)
{
for(var j=0; j < b.length; j++)
{
console.log(a[i], b[j], a[i].length - a[i].replace(c[j],'').length);
}
}
编辑:我们进行了循环效率测试,而for循环是最有效的测试。
答案 1 :(得分:0)
我不确定您要比较的级别以及它对500,000个元素的工作效率如何,但是如果您要进行简单的A / B比较,则可以将数组转换为字符串并比较字符串
function compareArrays(arr1, arr2) {
const compare1 = JSON.stringify(arr1.sort());
const compare2 = JSON.stringify(arr2.sort());
return compare1 === compare2;
}