数组中的每个字符串都是一个数字,例如array1 = ["1296", "12", "27"];
对于上面的每个字符串,如果可能在没有余数的情况下均匀地除以6,我想至少进行一次,然后如果结果仍然超过2个字符,则重复。然后替换相同位置的字符串,使数组变为["36", "2", "27"];
到目前为止,我的代码部分有效。
w=0;
function divideBySix(){
if ((array1[w] / 6) == (Math.floor(array1[w] / 6))) {
var temp = array1[w] / 6;
array1[w] = temp.toString();
if (array1[w].length < 3) {
w++;
}
divideBySix();
}
该函数成功地将第一个字符串除以6,然后一次又一次地调用自身,直到结果在2个字符长度内。此时,它应该继续调用自身,并对数组的下一个字符串执行相同的操作。但它没有做下一个字符串。我不知道为什么它在完成第一个字符串后停止。所以数组看起来像["36", "12", "27"];
而且,w成功增加了。所以我知道它至少到目前为止......
答案 0 :(得分:1)
我认为你可以选择modulo运算符,如果这是你想要实现的目标
if(array1[w] % 6 == 0) doSomething()
并解决您当前的问题,您可以引入第二个功能;对我而言,它适用于:
function divideBySix(array){
for(var i = 0; i < array.length; i++){
array[i] = divideNumber(array[i], 0);
}
}
function divideNumber(nr, ct){
if((ct < 1 || nr > 99) && nr%6 == 0 ) return divideNumber(nr/6, ct+1);
else return nr;
}
var array1 = ["1296", "12", "27"];
divideBySix(array1);
alert(array1);
答案 1 :(得分:1)
您提供的功能具有不平衡{ }
。当我在最后添加一个并运行它时,我会得到你想要的结果 - ["36", "2", "27"]
。必须有其他错误,或者您没有正确复制代码。
为了理解操作,我将其添加到divideBySix
:
console.log(w, array1.toString());
答案 2 :(得分:0)
当我测试代码时,它就是这样做的: