在操作员比较中不返回预期结果

时间:2019-01-15 14:42:39

标签: javascript

let a=[1,2,3,4];
let m=[1,4,9,16];
for (let x in a) {
    x = parseInt(x)+1;
    console.log((x**2) in m)
}

我已经尝试过,并且每次获得truefalsefalsefalse的输出。为什么这样? 我希望它在每种情况下都能返回true

2 个答案:

答案 0 :(得分:3)

您可以使用for ... of statement而不是for ... in statement作为键的值。然后使用Array#includes检查。

let a = [1, 2, 3, 4];
let m = [1, 4, 9, 16];

for (let x of a) { 
    console.log(m.includes(x ** 2));
}

答案 1 :(得分:0)

您要为数组+1中的每个元素添加a。使用includes而不是in来匹配另一个{{1 }}。

使用调试器,然后再次运行代码段

element

所以最后一个元素是array(say m, as per your snippet)乘以debugger; let a=[1,2,3,4]; let m=[1,4,9,16]; for (let x of a) { x = parseInt(x)+1; // you are increasing value by +1 here so [1,2,3,4] becomes [2,3,4,5] console.log(m.includes(x**2)) //prints true true true false } 的倍数,因此它在控制台上显示为false。