簡體   English   中英

JavaScript-有效比較兩個數組

[英]JavaScript - Comparing two arrays efficiently

我正在尋找省時的方法來比較數組之間的元素。 我有兩個簡化的簡短示例,說明我的數組可以包含的數據:

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

我正在使用的數組長度超過500 000個元素。 在我的陣列我會從陣列的每個元素進行比較b到在陣列的每個元件a和計算取決於其結果。 (即檢查許多如何O期從陣列的話a具有和存儲結果)。然而,我目前使用兩個回路-一個迭代a和嵌套的一個里面迭代b

我的目標是提高效率,因為我認為我的算法遠非高效。 我很想了解可以更好地處理此問題的常見做法。

另一種方法是使用帶有空白的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循環是最有效的測試。

我不確定您要比較的級別以及它對500,000個元素的工作程度如何,但是如果您要進行簡單的A / B比較,則可以將數組轉換為字符串並比較字符串。

function compareArrays(arr1, arr2) {
  const compare1 = JSON.stringify(arr1.sort());
  const compare2 = JSON.stringify(arr2.sort());
  return compare1 === compare2;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM