我有一个类似 [A,B,C,D]
的数组。我想在 for 循环中访问该数组,如下所示
var arr = [A,B,C,D];
var len = arr.length;
for(var i = 0; i<len; i++){
0 - A,B,C
1 - B,C,D
2 - C,D,A
3 - D,A,B
}
我想像在 JavaScript 中那样访问它,有什么想法吗?
原文由 Anshul 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个类似 [A,B,C,D]
的数组。我想在 for 循环中访问该数组,如下所示
var arr = [A,B,C,D];
var len = arr.length;
for(var i = 0; i<len; i++){
0 - A,B,C
1 - B,C,D
2 - C,D,A
3 - D,A,B
}
我想像在 JavaScript 中那样访问它,有什么想法吗?
原文由 Anshul 发布,翻译遵循 CC BY-SA 4.0 许可协议
回答主要问题,有人可以使用 模运算 以循环方式访问数组。这可以在 JavaScript 中使用模运算符 ( %
) 和解决方法来实现。
Given an array arr
of a length n
and a value val
stored in it that will be obtained through an access index i
, the以循环方式和更安全的方式访问数组,忽略 i
的值和符号,将是:
let val = arr[(i % n + n) % n];
这个小技巧是必要的——有人不能直接使用模数结果——因为 JavaScript 总是将模数运算计算为被除数(第一个操作数)和除数(第二个操作数)之间除法的余数,不考虑它们的符号而是赋值给余数是股息的符号。该行为并不总是会产生所需的模运算“环绕”效果,并可能导致错误访问数组的负数位置。
更多信息参考:
原文由 wwgoncalves 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
尝试这个:
如果不改变数组,它将是