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();
}
}