我有以下
var a = [4,6,12];
var b = [4,6];
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < b.length; j++) {
if (a[i] !== b[j]) {
a.pop();
}
}
}
我想比较两者,如果在b中找不到,则删除12。我不想创建一个新数组,结果只是从。
中删除但是,如果我控制日志,我会得到一个空的。
答案 0 :(得分:1)
a
出现空的原因是因为你的双循环。您正在将a
的每个元素与b
的每个其他元素进行比较。当你点击[0] == b [1]时,很明显,4!= 6所以你弹出它。
答案 1 :(得分:1)
尝试:
var a = [4,6,12];
var b = [4,6];
a.forEach(function(v,i){
if (b.indexOf(v) === -1) {
a.splice(i,v);
}
});
console.log(a); // result [4,6]
迭代检查a
数组的每个元素并与b
元素进行比较,如果b
中没有某个元素,那么该元素将从a
中删除阵列
答案 2 :(得分:0)
var a = [4,6,12];
var b = [4,6];
for (var i = 0; i < a.length; i++) {
if (!b.indexOf(a[i])) {
a.pop();
}
}
答案 3 :(得分:0)
var a = [4,6,12];
var b = [4,6];
var common = $.grep(a, function(element) {
return $.inArray(element, b ) !== -1;
});
console.log(common); // returns [4,6];
答案 4 :(得分:0)
试试这个:
var a = [4,6,12];
var b = [4,6];
var i = 0;
for (; i < a.length && i < b.length; i++)
if (a[i] !== b[i]) {
a.pop();
break;
}
while(i < a.length)
a.pop();
答案 5 :(得分:0)
a = a.filter(function(item){ return b.contains(item); });
答案 6 :(得分:0)
您的第二个for循环导致此脚本从以下内容中删除所有内容:
1. i = 0, j = 0 => a[0] = 4, b[0] = 4. (4 !== 4) => false,
2. i = 0, j = 1 => a[0] = 4, b[1] = 6. (4 !== 6) => true, pop first element from a
3. i = 1, j = 0 => a[1] = 6, b[0] = 4. (6 !== 4) => true, pop second elmement from a
所以你从一个接一个地弹出一个元素,直到a为空。
尝试改为:
var a = [4,6,12];
var b = [4,6];
for (var i = 0; i < a.length; i++) {
if (b.indexOf(a[i]) == -1) {
a.pop();
}
}