![](/img/trans.png)
[英]Array stored in Mongo fails deep assert comparison to native javascript array with same length and values
[英]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.