我正在解决一些coderbyte.com挑战,我遇到了一些问题。这是任务:
使用JavaScript语言,让函数
ArithGeo(arr)
获取存储在arr
中的数字数组,如果序列遵循算术模式则返回字符串“Arithmetic”,如果遵循,则返回“Geometric”几何图案。如果序列不遵循任何一种模式,则返回-1。算术序列是每个数字之间的差异是一致的,其中在几何序列中,第一个之后的每个术语乘以某个常数或公共比率。算术示例:[2,4,6,8]和几何示例:[2,6,18,54]。
可以输入负数作为参数,不输入0,并且没有数组将包含所有相同的元素。
function ArithGeo(arr) {
var x = 0;
var s = 0;
var allObjects = [];
for(var i=0; i<arr.length;i++) {
while(x<arr.length-1) {
var diff = arr[x+1]-arr[x];
allObjects.push(diff);
x++;
}
while(s<allObjects.length) {
console.log(allObjects.length);
if(allObjects[s]===allObjects[s+1]) {
console.log('entered if');
return "Arithmetic";
s++;
}
else if(allObjects[s+1]%allObjects[s]===0) {
return "Geometric";
s++;
}
else {
return "-1";
s++;
}
}
}
}
// keep this function call here
// to see how to enter arguments in JavaScript scroll down
ArithGeo([1,2,3,100]);
它只进入第一个if语句一次,它应该为allObjects
数组中的每个元素输入3次。你能告诉我为什么会这样吗?
答案 0 :(得分:4)
问题是return
打破了函数执行,之后没有执行任何其他操作。
var f = function () {
these();
things = will + be * 3;
executed();
return 4;
while(anything) {
after++;
a = "return statement";
won = 't';
}
};
f();
狂野猜测:也许continue
会帮助你(跳到下一次迭代)