作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始学习 javascript,这是我在 stackoverflow 上的第一个问题,所以如果我以错误的方式处理这个问题,请随意批评我。
var divisibleByThreePairSum = function(array) {
var pairs = [];
for (var i = 0; i < array.length; i++) {
for (var j = i++; j < array.length; j++) {
var sum = array[i] + array[j];
if (sum % 3 === 0) {
pairs.push([i, j]);
}
}
}
return pairs;
}
console.log(divisibleByThreePairSum([3,1,0,2,1,3,2,0]));
这给了我答案;
[ [ 1, 3 ], [ 1, 6 ], [ 3, 4 ], [ 5, 5 ], [ 5, 7 ], [ 7, 7 ] ]
[Finished in 0.2s]
对于第二个“for”循环,我将其格式化为 (j = i++) 以避免像 [1, 3], [3, 1] 这样的重复,但我似乎无法摆脱像 [5, 5] 和 [7, 7] 这样的对。有没有可能的方法以不同的方式格式化代码以避免这种情况发生?如果这个问题问得不恰当,我再次表示歉意;我肯定会更频繁地使用这个网站,所以如果我在“问题格式”方面做错了什么,请告诉我,谢谢!
最佳答案
问题是j = i++
。这会将i
的值分配给j
,然后递增i
的值。这也将导致跳过 i
的替代值,因为它会递增两次。
for(var i = 0; i< 5; i++){
for(var j = i++; j< 5; j++){
console.log(i,j)
}
}
您应该使用j=i+1
。这将发送下一个值,并且不会增加 i
var divisibleByThreePairSum = function(array) {
var pairs = [];
for (var i = 0; i < array.length; i++) {
for (var j = i+1; j < array.length; j++) {
var sum = array[i] + array[j];
if (sum % 3 === 0) {
pairs.push([i, j]);
}
}
}
return pairs;
}
console.log(divisibleByThreePairSum([3, 1, 0, 2, 1, 3, 2, 0]));
关于javascript - divisibleByThreePairSum,我得到配对重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300343/
我刚刚开始学习 javascript,这是我在 stackoverflow 上的第一个问题,所以如果我以错误的方式处理这个问题,请随意批评我。 var divisibleByThreePairSum
我是一名优秀的程序员,十分优秀!