我被困在这里。我有两个数组,我不知道每个数组的长度,它们可以是相同的长度或没有,我不知道,但我需要创建一个新数组,其数字不常见于a(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时,我不知道该怎么做。
答案 0 :(得分:9)
如果我正确理解您的要求,您的代码中似乎存在逻辑错误。
此代码会将a
中不在b
内的所有元素放入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]
答案 1 :(得分:2)
试试这个
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;
}