gpt4 book ai didi

javascript - & 1 JavaScript。它是如何工作的?聪明还是善良?

转载 作者:行者123 更新时间:2023-11-28 18:29:46 25 4
gpt4 key购买 nike

我正在研究一个 CodeWars 问题(智商测试)的解决方案,其中给你一串数字,除了 1 之外的所有数字要么是偶数,要么是奇数。您需要返回与其他数字不同的数字位置的索引加 1。

我对下面发布的解决方案中显示 & 1 的行感到困惑。该代码在使用 && 或删除 & 1 时不起作用。

function iqTest(numbers){
numbers = numbers.split(' ')

var evens = []
var odds = []

for (var i = 0; i < numbers.length; i++) {
if (numbers[i] & 1) { //PLEASE EXPLAIN THIS LINE!
odds.push(i + 1)
} else {
evens.push(i + 1)
}
}

return evens.length === 1 ? evens[0] : odds[0]
}

此外,您是否认为使用 &1 是最佳实践,还是它只是“聪明”的代码?

最佳答案

单个&'bitwise' operator 。此特定运算符 (&) 是按位 AND 运算符 - 它在两个操作数的相应位均为 1 的每个位位置返回 1。

这里使用它的方式是测试numbers[i]是偶数还是奇数。由于 i0 循环到 numbers.length,对于第一次迭代,if 语句计算 0 & 1 其计算结果为 0false。在循环的下一次迭代中,语句将为 1 & 1,其计算结果为 1true

结果 - 当 numbers[i] & 1 计算结果为 0false 时,则 numbers[i] 被推送到 odd 数组。如果 numbers[i] & 1 的计算结果为 1true,则 numbers[i] 被推送到even 数组。

测试偶数和奇数的 & 运算符的替代方法是使用 modulo operatornumbers[i] % 2 会产生相同的输出。也就是说,1 % 2 结果为 1true,就像任何奇数一样,因为奇数除以 2 会得到余数1。任何偶数,例如 2 % 2 都会导致 0false,因为偶数除以 2 会得到余数0.

至于你的第二个问题,它是“聪明还是好?”。这绝对是聪明的。它是否好取决于你问的是谁以及你的目标是什么。许多人会说它比使用 num % 2 更不逻辑且更难阅读。

关于javascript - & 1 JavaScript。它是如何工作的?聪明还是善良?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38298808/

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