Javascript 为什么';这个循环不能做我可以手动做的事情吗?
我有一个不起作用的函数:Javascript 为什么';这个循环不能做我可以手动做的事情吗?,javascript,arrays,loops,for-loop,Javascript,Arrays,Loops,For Loop,我有一个不起作用的函数: function gapAll( ary2, ary )//perform gap() on all of the values of ary2 { for( i = 0; i < ary2.length; i++ ) { gap( ary2[ i ], ary ); } } 我的目标是通过一个循环来完成,而不是手动完成。下面是我所有的代码…我搞不懂…我只想循环ary2的索引并使用它们作为gap。我已将代码缩短为仅此函数使
function gapAll( ary2, ary )//perform gap() on all of the values of ary2
{
for( i = 0; i < ary2.length; i++ )
{
gap( ary2[ i ], ary );
}
}
我的目标是通过一个循环来完成,而不是手动完成。下面是我所有的代码…我搞不懂…我只想循环ary2的索引并使用它们作为gap。我已将代码缩短为仅此函数使用的项:
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>test</title>
<style>
html
{
background-color: #0f0f0f;
color: #ccc;
font-family:Arial;
font-size:90%;
}
</style>
</head>
<body>
<header>
</header>
<section id = "body">
<h3>result</h3>
<p id = "trg">...</p>
</section>
<footer>
</footer>
<script>
/*|||||||||||||||||||||||||||||||||||||| BASE ARRAYS ||||||||||||||||||||||||||||||||||||||*/
digits = [];//digits 1 - 9
for( i = 0; i < 10; i++ )
{
digits.push( i );
window[ 'digit' + i ] = 0;
} digitsCpy = digits.slice( 0 );
/*||||||||||||||||||||||||||||||||||||||| FUNCTIONS |||||||||||||||||||||||||||||||||||||||*/
function gapAll( ary2, ary )//gap
{
for( i = 0; i < ary2.length; i++ )
{
gap( ary2[ i ], ary );
}
}
function gap( v, ary )//gap
{
v = v.toString();
places = [];
if( v.toString().length == 1 )
{
var counter = 0;
var identifier = new RegExp( v );
for( i = 0; i < ary.length; i++ )
{
if( identifier.test( ary[ i ] ) == true )
{ places.push( i ) }
}
var gaps = places.slice( 0 );
for( i = 0; i < places.length; i++ )
{
if( i > 0 )
{
j = i - 1;
gaps[ i ] = places[ i ] - places[ j ] - 1;
}
}
window[ 'digit' + v ] = gaps.slice( 0 );
if( window[ 'digit' + v ] == '' )
{ window[ 'digit' + v ] = 0; }
}
else if( v.toString().length == 2 )
{
x = v.slice( 0, 1 );
y = v.slice( 1, 2 );
var counter = 0;
var identifier = new RegExp( x + ".*" + y + "|" + y + ".*" + x );
for( i = 0; i < ary.length; i++ )
{
if( identifier.test( ary[ i ] ) == true )
{ places.push( i ) }
}
var gaps = places.slice( 0 );
for( i = 0; i < places.length; i++ )
{
if( i > 0 )
{
j = i - 1;
gaps[ i ] = places[ i ] - places[ j ] - 1;
}
}
window[ 'pair' + v ] = gaps.slice( 0 );
if( window[ 'pair' + v ] == '' )
{ window[ 'pair' + v ] = 0; }
}
else if( v.toString().length == 3 )
{
x = v.slice( 0, 1 );
y = v.slice( 1, 2 );
z = v.slice( 2, 3 );
var counter = 0;
var identifier = new RegExp
(
x + ".*" + y + ".*" + z + "|" + x + ".*" + z + ".*" + y + "|" +
y + ".*" + x + ".*" + z + "|" + y + ".*" + z + ".*" + x + "|" +
z + ".*" + x + ".*" + y + "|" + z + ".*" + y + ".*" + x
);
for( i = 0; i < ary.length; i++ )
{
if( identifier.test( ary[ i ] ) == true )
{ places.push( i ) }
}
var gaps = places.slice( 0 );
for( i = 0; i < places.length; i++ )
{
if( i > 0 )
{
j = i - 1;
gaps[ i ] = places[ i ] - places[ j ] - 1;
}
}
window[ 'set' + v ] = gaps.slice( 0 );
if( window[ 'set' + v ] == '' )
{ window[ 'set' + v ] = 0; }
}
}
function addDim( m )//add dimension to m
{
if( Array.isArray( m ) )
{
for( i = 0; i < m.length; i++ )
{
if( m[ i ].length > 1 )
{
m[ i ] = m[ i ].split( '' );
}
}
return m;
}
else
{
ary = m.split( ' ' );
return ary;
}
}
/*||||||||||||||||||||||||||||||||||||||| MAIN ||||||||||||||||||||||||||||||||||||||||*/
ary = [ 409,879,483,465,907,154,838,847,432,434,842,401 ];
gapAll( digits, ary );
document.getElementById( 'trg' ).innerHTML = digit3;
</script>
</body>
</html>
测验
html
{
背景色:#0f0f;
颜色:#ccc;
字体系列:Arial;
字体大小:90%;
}
后果
/*||||||||||||||||||||||||||||||||||||||基阵列||||||||||||||||||||||||||||||||||||||*/
数字=[]//数字1-9
对于(i=0;i<10;i++)
{
数字推送(i);
窗口['数字'+i]=0;
}digitsCpy=数字。切片(0);
/*|||||||||||||||||||||||||||||||||||||||功能|||||||||||||||||||||||||||||||||||||||*/
函数gapAll(ary2,ary)//gap
{
对于(i=0;i<2.length;i++)
{
gap(ary2[i],ary);
}
}
函数间隙(v,ary)//间隙
{
v=v.toString();
学额=[];
如果(v.toString().length==1)
{
var计数器=0;
var标识符=新的RegExp(v);
对于(i=0;i0)
{
j=i-1;
间隙[i]=位置[i]-位置[j]-1;
}
}
窗口['数字'+v]=间隙。切片(0);
如果(窗口['数字'+v]='')
{window['数字'+v]=0;}
}
else if(v.toString().length==2)
{
x=v.slice(0,1);
y=v.切片(1,2);
var计数器=0;
var标识符=新的RegExp(x+“*”+y+“|”+y+“*”+x);
对于(i=0;i0)
{
j=i-1;
间隙[i]=位置[i]-位置[j]-1;
}
}
窗口['pair'+v]=间隙。切片(0);
如果(窗口['对'+v]='')
{window['pair'+v]=0;}
}
else if(v.toString().length==3)
{
x=v.slice(0,1);
y=v.切片(1,2);
z=v.slice(2,3);
var计数器=0;
var标识符=新的RegExp
(
x+“*”+y+“*”+z+“|”+x+“*”+z+“*”+y+“|”+
y+“*”+x+“*”+z+“|”+y+“*”+z+“*”+x+“|”+
z+“*”+x+“*”+y+“|”+z+“*”+y+“*”+x
);
对于(i=0;i0)
{
j=i-1;
间隙[i]=位置[i]-位置[j]-1;
}
}
窗口['set'+v]=间隙。切片(0);
如果(窗口['设置'+v]='')
{window['set'+v]=0;}
}
}
函数addDim(m)//向m添加维度
{
if(数组isArray(m))
{
对于(i=0;i1)
{
m[i]=m[i]。拆分(“”);
}
}
返回m;
}
其他的
{
ary=m.分裂(“”);
回归分析;
}
}
/*|||||||||||||||||||||||||||||||||||||||主要||||||||||||||||||||||||||||||||||||||||*/
ary=[409879483465907154838847432434842401];
gapAll(数字,ari);
document.getElementById('trg')。innerHTML=digit3;
为了便于理解,gap(v,ary)
函数的整个思想是查找数组中的“间隙”或值之间的空间。所以如果我在数组中寻找5[5,2,5]<代码>间隙(5,ary)将返回(0,1)。因为5在第一个索引(0)处,然后在第三个索引处重复之前跳过了1个索引(2)
这可能很简单,因为我是个新手。谢谢
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>test</title>
<style>
html
{
background-color: #0f0f0f;
color: #ccc;
font-family:Arial;
font-size:90%;
}
</style>
</head>
<body>
<header>
</header>
<section id = "body">
<h3>result</h3>
<p id = "trg">...</p>
</section>
<footer>
</footer>
<script>
/*|||||||||||||||||||||||||||||||||||||| BASE ARRAYS ||||||||||||||||||||||||||||||||||||||*/
digits = [];//digits 1 - 9
for( i = 0; i < 10; i++ )
{
digits.push( i );
window[ 'digit' + i ] = 0;
} digitsCpy = digits.slice( 0 );
/*||||||||||||||||||||||||||||||||||||||| FUNCTIONS |||||||||||||||||||||||||||||||||||||||*/
function gapAll( ary2, ary )//gap
{
for( i = 0; i < ary2.length; i++ )
{
gap( ary2[ i ], ary );
}
}
function gap( v, ary )//gap
{
v = v.toString();
places = [];
if( v.toString().length == 1 )
{
var counter = 0;
var identifier = new RegExp( v );
for( i = 0; i < ary.length; i++ )
{
if( identifier.test( ary[ i ] ) == true )
{ places.push( i ) }
}
var gaps = places.slice( 0 );
for( i = 0; i < places.length; i++ )
{
if( i > 0 )
{
j = i - 1;
gaps[ i ] = places[ i ] - places[ j ] - 1;
}
}
window[ 'digit' + v ] = gaps.slice( 0 );
if( window[ 'digit' + v ] == '' )
{ window[ 'digit' + v ] = 0; }
}
else if( v.toString().length == 2 )
{
x = v.slice( 0, 1 );
y = v.slice( 1, 2 );
var counter = 0;
var identifier = new RegExp( x + ".*" + y + "|" + y + ".*" + x );
for( i = 0; i < ary.length; i++ )
{
if( identifier.test( ary[ i ] ) == true )
{ places.push( i ) }
}
var gaps = places.slice( 0 );
for( i = 0; i < places.length; i++ )
{
if( i > 0 )
{
j = i - 1;
gaps[ i ] = places[ i ] - places[ j ] - 1;
}
}
window[ 'pair' + v ] = gaps.slice( 0 );
if( window[ 'pair' + v ] == '' )
{ window[ 'pair' + v ] = 0; }
}
else if( v.toString().length == 3 )
{
x = v.slice( 0, 1 );
y = v.slice( 1, 2 );
z = v.slice( 2, 3 );
var counter = 0;
var identifier = new RegExp
(
x + ".*" + y + ".*" + z + "|" + x + ".*" + z + ".*" + y + "|" +
y + ".*" + x + ".*" + z + "|" + y + ".*" + z + ".*" + x + "|" +
z + ".*" + x + ".*" + y + "|" + z + ".*" + y + ".*" + x
);
for( i = 0; i < ary.length; i++ )
{
if( identifier.test( ary[ i ] ) == true )
{ places.push( i ) }
}
var gaps = places.slice( 0 );
for( i = 0; i < places.length; i++ )
{
if( i > 0 )
{
j = i - 1;
gaps[ i ] = places[ i ] - places[ j ] - 1;
}
}
window[ 'set' + v ] = gaps.slice( 0 );
if( window[ 'set' + v ] == '' )
{ window[ 'set' + v ] = 0; }
}
}
function addDim( m )//add dimension to m
{
if( Array.isArray( m ) )
{
for( i = 0; i < m.length; i++ )
{
if( m[ i ].length > 1 )
{
m[ i ] = m[ i ].split( '' );
}
}
return m;
}
else
{
ary = m.split( ' ' );
return ary;
}
}
/*||||||||||||||||||||||||||||||||||||||| MAIN ||||||||||||||||||||||||||||||||||||||||*/
ary = [ 409,879,483,465,907,154,838,847,432,434,842,401 ];
gapAll( digits, ary );
document.getElementById( 'trg' ).innerHTML = digit3;
</script>
</body>
</html>
function gapAll(ary2, ary) {
for(var i = 0; i < ary2.length; i++) {
gap(ary2[i], ary);
}
}
for (var i = 0; i < ary2.length; i++) {
gap(i, ary);
}
for (var i = 0; i < ary2.length; i++) {
gap(ary2[i], ary);
}