JavaScript-有效比较两个数组

时间:2018-10-29 22:14:17

标签: javascript arrays loops nested

我正在寻找一种省时的方法来比较数组之间的元素。 我有两个简化的简短示例,说明我的数组可以包含的数据:

let a = ["mushrooms", "bread", "tomato", "sauce"]
let b = ["o", "e", "a"]

我正在使用的数组的长度超过500 000个元素。在我的数组中,我将比较数组b中的每个元素与数组a中的每个元素,并据此计算结果。 (即检查数组O中的单词有多少a个并存储结果)但是,我目前正在使用两个循环-一个循环a和一个嵌套循环{ {1}}。

我的目标是提高效率,因为我认为我的算法远非高效。我很想了解可以更好地解决此问题的常见做法。

2 个答案:

答案 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;
}