如何在multiArray中定义值

时间:2015-10-28 06:13:56

标签: javascript arrays

这是我的第一个问题,我会尽力明白。

我需要在位置分配一个值。我有一个7行的二维数组(例如)。 根据某人给我的价值,我必须改变价值立场。

实施例 如果有人给我:3。我必须按照以下顺序放置这3个。

1 * * * * * * * * * 
2 * * * * * * * * * 
3 * * * * * * * * O 
4 * * * * * * * * O 
5 * * * * * * * * O 
6 * * * * * * * * * 
7 * * * * * * * * * 

如果有人给我:2

1 * * * * * * * * * 
2 * * * * * * * * * 
3 * * * * * * * * O 
4 * * * * * * * * O 
5 * * * * * * * * * 
6 * * * * * * * * * 
7 * * * * * * * * * 

我在数组的“中间”定义了一些起点。这些我做的还可以。 起点在中间。 S =起点

1    * * * * * * * * * 
2    * * * * * * * * * 
3    * * * * * * * * * 
4    S * * * * * * * * 
5    * * * * * * * * * 
6    * * * * * * * * * 
7    * * * * * * * * * 

问题是我必须在数组的最后添加'0',因为'0'的数量是可变的并且必须居中 我有这些代码:

var height = 7;
var width = 9;
var exit = 3; // or can be 2, or 4, 5 etc.

var matrix = new Array(height); 
for (var i=0; i<height; i++) { 
    matrix[i] = new Array(width); 
    for (var j = 0; j<width; j++) { 
        matrix[i][j] = *; 
    } 
}

function startPoint(height, matrix){
    // Se define el punto de partida
    var startPoint = Math.round(height/2) -1;
    document.write("el punto de partida es: "+startPoint)
    matrix[startPoint][0] = 'S';
    return matrix
}

function finishPoint(exit, matrix){
    // punto de salida.

    return matrix
}

我正在学习JavaScript,但我发现了一个无法解决的问题。我正在努力,我无法理解。

2 个答案:

答案 0 :(得分:0)

要将k值的数组置于s值的空间(其中s >= k)中心,您可以使用公式

 var x = Math.floor((s - k) / 2);

并将k值存储在xx+1,...,x+k-1中。

公式的想法是

  1. 计算剩余的免费名额(即s - k
  2. 将这些分成两部分,将其中的一半分给每一方
  3. 当然,如果免费场所的数量最终变成奇数,你就不能将它们分成两半,而一方会得到比另一方更多的东西。使用Math.floor负责此调整,使第一面减少一个元素。

答案 1 :(得分:0)

你只需找到中心(高度/ 2)并减去HALF&#34;退出&#34;的高度。因此,如果出口高4,那么2应该在一侧而2则在另一侧,所以你从中心减去2。

&#13;
&#13;
var height = 7;
var width = 9;
var exit = 3; // or can be 2, or 4, 5 etc.

var matrix = new Array(height); 
for (var i=0; i<height; i++) { 
    matrix[i] = new Array(width); 
    for (var j = 0; j<width; j++) { 
        matrix[i][j] = '*'; 
    } 
}

function startPoint(height, matrix){
    // Se define el punto de partida
    var startPoint = Math.round(height/2)-1 ;
    document.body.innerHTML+=("el punto de partida es: "+startPoint+'<br>')
    matrix[startPoint][0] = 'S';
    return matrix
}

function finishPoint(exit, matrix){
    // punto de salida.
    var startPoint=Math.round(height/2-(exit/2))
    for(var i=0;i<exit;i++)
      matrix[startPoint+i][width-1]='0'
    return matrix
}

matrix=startPoint(height,matrix)
matrix=finishPoint(exit,matrix)

for(var i=0;i<height;i++){
  for(var j=0;j<width;j++)
     document.body.innerHTML+=matrix[i][j]
  document.body.innerHTML+='<br>'
}

document.body.innerHTML+='la salida es de altura: '+exit+ ' entonces buscamos el centro ('+(height/2)+') y restamos mitad de la altura ('+exit/2+')'
&#13;
&#13;
&#13;