Javascript 比较数组js

Javascript 比较数组js,javascript,jquery,Javascript,Jquery,我有以下几点 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(); } } } var a=[4,6,12]; var b=[4,6]; 对于(变量i=0;i

我有以下几点

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();
       }
    }
}
var a=[4,6,12];
var b=[4,6];
对于(变量i=0;i
我想比较两者,如果在b中找不到12,则从a中删除12。我不想创建一个新的数组,其结果只是从中删除

然而,如果我控制台日志a,我得到的a是空的。

var a=[4,6,12];
var a = [4,6,12];
var b = [4,6];

for (var i = 0; i < a.length; i++) {
       if (!b.indexOf(a[i])) {
         a.pop();
       }
}
var b=[4,6]; 对于(变量i=0;i
之所以
a
显示为空是因为您的双循环。您正在将
a
的每个元素与
b
的每个其他元素进行比较。当你点击a[0]==b[1]时,显然是4!=6所以你把它打开了

试试看:

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
数组中删除

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();
var a=[4,6,12];
var b=[4,6];
var i=0;
对于(;i

您的第二个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();

        }
    }
var a=[4,6,12];
var b=[4,6];
对于(变量i=0;i
你到底想做什么?只保留两个数组中的元素?
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
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();

        }
    }