var growing = function (array) {
for (var i = 0; i < array.length; i++) {
if (array[i] > array[i + 1]) {
return false;
} else {
return true;
}
}
function missing(array) {
for (var i = 0; i < array.length - 1; i++) {
if (array[i + 1] !== array[i] + 1) {
return array[i] + 1;
}
}
}
};
我分配了两个任务,我需要你的帮助。首先在“增长”功能中,我必须检查阵列是否在增长。例如,对于数组[1,2,3,4,5,6,7]
,它应返回true,但[1,2,10,4,5,6,7]
为false。我对这个循环完全没有想法,我怎样才能升级循环?其次,在'missing'函数中,我必须遍历整个数组并检查它是否在迭代,我的意思是如果数组是这样的:[1, 2, 3, 5,]
它将返回4
,如果数组迭代正常而没有“跳”它应该返回null。当我尝试添加'else'循环时条件返回null;它只是打破了我的整个循环,它为每个数组返回null。怎么了?
答案 0 :(得分:0)
你几乎就在那里,见代码中的评论:
var growing = function (array) {
for (var i = 0; i < array.length; i++) {
if (array[i] > array[i + 1]) {
return false; // return only when it is not growing
}
}
// if not returned in loop, then array is ascending
return true;
};
// define function outside of growing function
function missing(array) {
for (var i = 0; i < array.length - 1; i++) {
if (array[i + 1] !== array[i] + 1) {
return array[i] + 1;
}
}
}
console.log(growing([1,2,3,4,5,6,7])); // true
console.log(growing([1,2,10,4,5,6,7])); // false
console.log(missing([1,2,3,4,5,6,7])); // undefined
console.log(missing([1, 2, 3, 5,])); // 4
答案 1 :(得分:0)
对于第一部分,我建议使用Array#every()
function isGrowing(array) {
return array.every(function (a, i, aa) {
return !i || aa[i - 1] + 1 === a;
});
}
document.write(isGrowing([1, 2, 3, 4, 5, 6, 7]) + '<br>');
document.write(isGrowing([1, 2, 10, 4, 5, 6, 7]) + '<br>');
document.write(isGrowing([1, 2, 3, 5, ]) + '<br>');
&#13;