[英]how to compare two arrays of different length if you dont know the length of each one in javascript?
我陷入了困境。 我有 2 個數組,我不知道每個數組的長度,它們可以是相同的長度,也可以不是,我不知道,但我需要創建一個新數組,其中的數字在 (2, 10)。
對於這種情況:
var a = [2,4,10];
var b = [1,4];
var newArray = [];
if(a.length >= b.length ){
for(var i =0; i < a.length; i++){
for(var j =0; j < b.length; j++){
if(a[i] !=b [j]){
newArray.push(b);
}
}
}
}else{}
如果我正確理解您的要求,您的代碼中似乎存在邏輯錯誤。
此代碼將把不在b
中a
所有元素放入newArray
。
var a = [2, 4, 10];
var b = [1, 4];
var newArray = [];
for (var i = 0; i < a.length; i++) {
// we want to know if a[i] is found in b
var match = false; // we haven't found it yet
for (var j = 0; j < b.length; j++) {
if (a[i] == b[j]) {
// we have found a[i] in b, so we can stop searching
match = true;
break;
}
// if we never find a[i] in b, the for loop will simply end,
// and match will remain false
}
// add a[i] to newArray only if we didn't find a match.
if (!match) {
newArray.push(a[i]);
}
}
澄清,如果
a = [2, 4, 10];
b = [4, 3, 11, 12];
然后newArray
將[2,10]
試試這個
var a = [2,4,10];
var b = [1,4];
var nonCommonArray = [];
for(var i=0;i<a.length;i++){
if(!eleContainsInArray(b,a[i])){
nonCommonArray.push(a[i]);
}
}
function eleContainsInArray(arr,element){
if(arr != null && arr.length >0){
for(var i=0;i<arr.length;i++){
if(arr[i] == element)
return true;
}
}
return false;
}
我發現這個解決方案只使用了
filter()<\/code>和
include()<\/code>方法,這是一個非常簡單的方法。
filter()<\/code>方法創建一個新數組,其中包含通過所提供函數實現的測試的所有元素。
includes()<\/code>方法確定數組是否在其條目中包含某個值,並根據需要返回 true 或 false。
function compareArrays(a, b) {
return a.filter(e => b.includes(e));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.