[英]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.