gpt4 book ai didi

JavaScript 减去零更改结果

转载 作者:行者123 更新时间:2023-12-04 22:39:10 24 4
gpt4 key购买 nike

我在 jsfiddle 中玩 Arrays 并注意到当我这样做时:

let a = [0,1,2,3,4];

for (let i in a) {
console.log(a.indexOf(i));
}

它记录:

-1, -1, -1, -1, -1

但是当我这样做时:
let a = [0,1,2,3,4];

for (let i in a) {
console.log(a.indexOf(i - 0));
}

它记录:

0,1,2,3,4

减零改变了结果!

起初我认为这是一个 jsfiddle 问题,但后来我用我的代码编辑器尝试了同样的事情。为什么会发生这种情况,有人可以向我解释吗?

最佳答案

当你这样做时:

for (let i in a) ...

这将遍历数组的索引为 字符串 .它将数组视为对象,并像键一样遍历索引。你会得到字符串: "0", "1"...
您可以看到,如果您打印值并键入:

let a = [0,1,2,3,4];

for (let i in a) {
console.log(i, typeof i)
}


这些字符串不在你的数组中——你的数组有数字——所以 findIndex()没有找到他们并给你 -1 .但是,当您减去 0 时,javascript 会为您转换为整数并突然找到它们,因为索引与值匹配。

你可能想要的是 for...of迭代值:

let a = [0,1,2,3,4];

for (let i of a) {
console.log("i:", i, typeof i)
console.log("index:", a.indexOf(i));
}

关于JavaScript 减去零更改结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59205713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com