我有这个函数,它接受字符串值'1'并为它添加一个'0'。
问题在于我希望它能够完成设定次数的功能。 即我希望它去6次,所以数字最终为'1''''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.
}
答案 0 :(得分:3)
在返回之前需要一个条件,检查数组大小是否等于要求:
if (num.length >= size) {
return num.join();
}
当>
小于2时,size
是避免无限循环的安全措施。在调用函数时,不要忘记传递size
。
请注意,在迭代时添加到数组是不好的做法:这可能会造成混淆,并导致未检测到的错误。我似乎明白你在课程或其他方面将此作为模板。如果是这样,请忘记这种工作方式。
这种功能的更好设计是:
function stringy(size){
return Array.from(Array(size), (_, i) => 1-(i%2)).join('');
}
console.log(stringy(5));
console.log(stringy(6));
&#13;
而且,甚至还有一个String#repeat
函数:
function stringy(size){
return '10'.repeat(size/2+1).substr(0,size);
}
console.log(stringy(5));
console.log(stringy(6));
&#13;
答案 1 :(得分:1)
一些问题:
您未在循环中使用传递的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))
答案 2 :(得分:0)
function something(size) {
var iterations = Math.floor(size / 2);
var result = '';
for (var index = 0; index < iterations; index++) {
result += '10';
}
return result;
}
答案 3 :(得分:0)
/**
* 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();
}