我学习Java Script的基础知识。我想在控制台中打印以下内容:
*2345
**345
***45
****5
*****
*****
****5
***45
**345
*2345
我已经编写了代码: var x = 5; var line;
for(var i = 0; i<x; i=i+1){
line = "";
for(var j=0; j<x; j=j+1){
if(j <= i){
line = line + " * ";
}
}
console.log(line);
}
for(var i = x; i>0; i--){
line = "";
for(var j=0; j<x; j=j+1){
if(j <= i-1){
line = line + " * ";
}
}
console.log(line)
}
结果是:
*
**
***
****
*****
*****
****
***
**
*
有人可以帮我修改循环吗?我尝试过各种各样的东西,但它永远不会奏效。
答案 0 :(得分:2)
您可以将这个用于if条件:
else {
line += j + 1;
}
答案 1 :(得分:1)
var baseString = "12345";
var starStrings = [];
for(var i = 0; i < baseString.length; i++){
starStrings.push("*".repeat(i + 1) + baseString.slice(i + 1));
}
starStrings = starStrings.concat(starStrings.slice().reverse());
starStrings.forEach(function(s){
document.write(s + "<br />");
});
&#13;
答案 2 :(得分:1)
我会这样做的:
var numbers = [1,2,3,4,5],
nLength = numbers.length,
result = [],
stringOf = function( value,times,str ) {
if( 'undefined' === typeof str )
str = '';
if( times === 0 )
return str;
str += value;
times--;
return stringOf( value,times,str );
},
log = function( el ) { console.log( el ) };
for ( var i = 0; i < nLength; i++ ) {
result[ i ] = stringOf( '*',i + 1 ) + numbers.slice( i + 1,nLength).join('');
result[ i + nLength ] = stringOf( '*',nLength - i ) + numbers.slice( nLength - i,nLength).join('');
}
result.map( log );
输出:
*2345
**345
***45
****5
*****
*****
****5
***45
**345
*2345
编辑numbers
数组会改变输出,其输出方式与指定的方式相同。