簡體   English   中英

JavaScript數組長度比較

[英]JavaScript Array length Comparison

在我的代碼中,我檢查兩個數組中是否存在相似的值,以及是否存在相似的值,但不會在結果中顯示它們,但是,如果我執行相同的檢查但切換了數組的長度,這意味着Array2比Array1長,我得到了空結果,空數組。 即使切換了陣列的長度,我如何也能得到相同的結果?

我的代碼:

  var Array2 = [ "1", "2", "3", "4", "5" ]; var Array1 = ["1","2","3"]; var result = []; for(var i = 0; i < Array1.length ; i++){ var x = Array1[i]; var check = false; for( var y = 0; y < Array2.length; y++){ if(x == Array2[y]){ check = true; } } if(!check){ result.push(x); } } console.log(result); 

您可以使用ES6 .filter()方法從數組中刪除重復項。

ES6方法:


 let Array2 = [ "1", "2", "3", "4", "5" ]; let Array1 = ["1","2","3"]; let result = Array2.filter(val => !Array1.includes(val)); console.log(result); 

香草JS方法:


 let Array1 = ["1", "2", "3"]; let Array2 = ["1", "2", "3", "4", "5"]; function getMissing(a, b) { var missings = []; var matches = false; for (let i = 0; i < a.length; i++) { matches = false; for (let e = 0; e < b.length; e++) { if (a[i] === b[e]) matches = true; } if (!matches) missings.push(a[i]); } return missings; } console.log(getMissing(Array2, Array1)); 

jQuery方法:


 let Array1 = ["1", "2", "3"]; let Array2 = ["1", "2", "3", "4", "5"]; let difference = $(Array2).not(Array1).get(); console.log(difference); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

嘗試跟隨

 var Array2 = [ "1", "2", "3", "4", "5" ]; var Array1 = ["1","2","3"]; var result = [...Array1.filter(v => !Array2.includes(v)), ...Array2.filter(v => !Array1.includes(v))]; console.log(result); 

使用以下方法可以提高性能

 var Array2 = [ "1", "2", "3", "4", "5" ]; var Array1 = ["1","2","3"]; var map2 = Array2.reduce((a,c) => Object.assign(a, {[c]:true}), {}); var map1 = Array1.reduce((a,c) => Object.assign(a, {[c]:true}), {}); var result = [...Object.keys(map2).filter(k => !map1[k]), ...Object.keys(map1).filter(k => !map2[k])]; console.log(result); 

大膽的方式

var Array2 = [ "1", "2", "3", "4", "5" ]; 
var Array1 = ["1","2","3"];
var result = [];
var matches = false;

if(Array2.length >= Array1.length){
  getUnique(Array2,Array1);
}
else{
  getUnique(Array1,Array2);
}


function getUnique(maxArray,minArray){
  $.each(maxArray,function(n1,i1){
     matches = false;
     $.each(minArray,function(n2,i2){
           if(i1 === i2){
             matches = true;
            }          
      });
      if(!matches){
        result.push(i1);
      }
  });
}
console.log(result);

暫無
暫無

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

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