我正在尝试解决Lucky Sevens问题,如果数组中的任何3个连续数字总和为7,则需要返回true。我知道有更好的方法可以做到,但我想使用function seven(arr) {
for(var i=0; i<arr.length; i++) {
if((arr[0] + arr[1] + arr[2]) == 7) {
document.body.innerHTML = “true”;
}
arr.splice(0,1);
document.body.innerHTML = “false”;
}}
seven([1,5,7,1,5,2,1,5,3,1,5,1]);
这里。由于某种原因,循环在中间停止,不检查最后六位数。
facet_grid
答案 0 :(得分:1)
使用while循环。
function seven(arr) {
while(arr.length > 2) {
if((arr[0] + arr[1] + arr[2]) == 7) {
document.body.innerHTML = "true";
}
arr.splice(0,1);
document.body.innerHTML = "false";
}
}
seven([1,5,7,1,5,2,1,5,3,1,5,1]);
如果有2个元素,循环将会中断,但会在数组中存在超过2个元素的时间内运行。
答案 1 :(得分:1)
因为“i”的值在第5次迭代后变得等于“arr”数组的长度,条件
class ViewController: UIViewController, GiveAwayDelegate {
func changeGiveaway(notification: Notification){
print("Change giveway was called")
...
}
}
循环中的停止执行for循环。
答案 2 :(得分:0)
您正在arr.splice(0,1);
中删除循环中的arr元素
并在循环中断条件i<arr.length
;在每次迭代时计算长度。所以当你使用splice时,数组会发生变化,而arr.length会给你一个新的数组长度。
带拼接的解决方案
function seven(arr) {
var len = arr.length
for(var i=0; i<len; i++) {
if((arr[0] + arr[1] + arr[2]) == 7) {
document.body.innerHTML = “true”;
}
arr.splice(0,1);
document.body.innerHTML = “false”;
}}
seven([1,5,7,1,5,2,1,5,3,1,5,1]);
没有拼接
function seven(arr) {
var len = arr.length -2
for(var i=0; i<len; i++) {
if((arr[i] + arr[i+1] + arr[i+2]) == 7) {
document.body.innerHTML = “true”;
}
document.body.innerHTML = “false”;
}}
seven([1,5,7,1,5,2,1,5,3,1,5,1]);