簡體   English   中英

如何遍歷一個函數一定次數?

[英]How to loop through a function a set number of times?

我有這個函數,它接受字符串值“ 1”並為其添加“ 0”。

問題是我希望它通過該函數一定次數。 即我希望它去6次,所以數字最終為'1''0''1''0''1''0',然后使用join函數將它們作為數組中的單個值

 alert(stringy()); //write a function that names stringy function stringy(size) { //create and empty array to hold new value var num = [] //push a the string value of 1 into array num.push('1') //loop through the array and if the variable equals 1 then push a 0 for (i = 0; i < num.length; i++) { if (num[i] == '1') { num.push('0') //if num has 0 in in it push 1 } else if (num[i] == '0') { num.push('1') } //numbers return two values in array but does not specify how many goes in. return num.join(); } //incomplete: only shows '1,0' in output one time. } 

返回之前,您需要一個條件,檢查數組大小是否等於要求的大小:

if (num.length >= size) {
    return num.join();
}

size小於2時, >可以避免無限循環。不要忘記在調用函數時傳遞size

請注意,在數組上進行迭代時添加數組是不好的做法:這可能會造成混淆,並導致無法檢測到錯誤。 我似乎了解您在課程或某些課程中將其作為模板。 如果是這樣,請忘記這種工作方式。

此類功能的更好設計是:

 function stringy(size){ return Array.from(Array(size), (_, i) => 1-(i%2)).join(''); } console.log(stringy(5)); console.log(stringy(6)); 

而且,甚至還有一個String#repeat函數:

 function stringy(size){ return '10'.repeat(size/2+1).substr(0,size); } console.log(stringy(5)); console.log(stringy(6)); 

幾個問題:

您沒有在循環中使用傳遞的size 您將在for內部返回,僅在一次迭代后返回。

我認為這更接近您想要的;

function stringy(size){

    var num=[]
    num.push('1')
    for(i=0; i < size; i++){
        if(num[i]=='1'){
            num.push('0')
        } else if(num[i]=='0'){
        num.push('1')    }
    }
    return num.join();
}

您還可以簡化一些事情,以提高可讀性:

function stringy(size){
    var num=[1]
    for(i=0; i < size; i++){
        num.push( num[i]==1 ? 0 : 1)
    }
    return num.join();
}
console.log(stringy(6))
function something(size) {
    var iterations = Math.floor(size / 2);
    var result = '';

    for (var index = 0; index < iterations; index++) {
        result += '10';
    }

    return result;
}
/**
 * Use modulo operator:
 * The modulo operator (%) returns the division remainder.
 * So:
 *      0/2 = 0
 *      1/2 = 1
 *      2/2 = 0
 *      3/2 = 1
 *      4/2 = 0
 * @param size int Array size.
 * @return string Joined array: "1,0,1,0,1,0,..."
 */
function stringy(size) {
    var num = [];

    for (var i = 0; i < size; i++) {
        num.push((i % 2 === 0) ? 1 : 0);
    }

    return num.join();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM