私はそれを混乱させることなく2次元配列にプッシュしようとしています、現在私の配列は:
var myArray = [
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1]
]
そして、私が試している私のコードは次のとおりです:
var r = 3; //start from rows 3
var c = 5; //start from col 5
var rows = 8;
var cols = 7;
for (var i = r; i < rows; i++)
{
for (var j = c; j < cols; j++)
{
myArray[i][j].Push(0);
}
}
その結果、次のようになります。
var myArray = [
[1,1,1,1,1,0,0],
[1,1,1,1,1,0,0],
[1,1,1,1,1,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
]
しかし、これが正しい方法であるかどうかはわかりません。
質問は、これをどのように達成するかです。
コードにいくつかのエラーがあります:
myArray[i].Push( 0 );
を使用して、新しい列を追加します。コード(myArray[i][j].Push(0);
)は、位置[i][j]
の配列に別の要素を追加しようとするため、3次元配列で機能します。正しいバージョンの1つは、一種の冗長バージョンですが、次のようになります。
var r = 3; //start from rows 3
var rows = 8;
var cols = 7;
// expand to have the correct amount or rows
for( var i=r; i<rows; i++ ) {
myArray.Push( [] );
}
// expand all rows to have the correct amount of cols
for (var i = 0; i < rows; i++)
{
for (var j = myArray[i].length; j < cols; j++)
{
myArray[i].Push(0);
}
}
2つの次元を反復処理すると、2つの次元をチェックする必要があります。
あなたがで始まると仮定:
var myArray = [
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1]
]; //don't forget your semi-colons
この2次元配列を拡張して、次のようにします。
var myArray = [
[1,1,1,1,1,0,0],
[1,1,1,1,1,0,0],
[1,1,1,1,1,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
];
つまり、違いが何であるかを理解する必要があります。
外側の配列から始めます。
var myArray = [
[...],
[...],
[...]
];
この配列を長くしたい場合は、正しい長さであることを確認し、内部配列を追加して違いを補う必要があります。
var i,
rows,
myArray;
rows = 8;
myArray = [...]; //see first example above
for (i = 0; i < rows; i += 1) {
//check if the index exists in the outer array
if (!(i in myArray)) {
//if it doesn't exist, we need another array to fill
myArray.Push([]);
}
}
次のステップでは、すべての配列のすべての列を反復処理する必要があります。元のコードに基づいて構築します。
var i,
j,
row,
rows,
cols,
myArray;
rows = 8;
cols = 7; //adding columns in this time
myArray = [...]; //see first example above
for (i = 0; i < rows; i += 1) {
//check if the index exists in the outer array (row)
if (!(i in myArray)) {
//if it doesn't exist, we need another array to fill
myArray[i] = [];
}
row = myArray[i];
for (j = 0; j < cols; j += 1) {
//check if the index exists in the inner array (column)
if (!(i in row)) {
//if it doesn't exist, we need to fill it with `0`
row[j] = 0;
}
}
}
すべての行をループし、欠落している行と列を追加する必要があります。既存の行の場合、cからcolsにループし、新しい行の場合、最初に空の配列を外側の配列にプッシュし、次に0からcolsにループします。
var r = 3; //start from rows 3
var c = 5; //start from col 5
var rows = 8;
var cols = 7;
for (var i = 0; i < rows; i++) {
var start;
if (i < r) {
start = c;
} else {
start = 0;
myArray.Push([]);
}
for (var j = start; j < cols; j++) {
myArray[i].Push(0);
}
}
あなたの場合、Push
をまったく使わずにそれを行うことができます:
var myArray = [
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1]
]
var newRows = 8;
var newCols = 7;
var item;
for (var i = 0; i < newRows; i++) {
item = myArray[i] || (myArray[i] = []);
for (var k = item.length; k < newCols; k++)
item[k] = 0;
}
var r = 3; //start from rows 3
var c = 5; //start from col 5
var rows = 8;
var cols = 7;
for (var i = 0; i < rows; i++)
{
for (var j = 0; j < cols; j++)
{
if(j <= c && i <= r) {
myArray[i][j] = 1;
} else {
myArray[i][j] = 0;
}
}
}
AM配列を作成し、最初の配列に入れます。この場合、JSON応答からデータを取得します
$.getJSON('/Tool/GetAllActiviesStatus/',
var dataFC = new Array();
function (data) {
for (var i = 0; i < data.Result.length; i++) {
var serie = new Array(data.Result[i].FUNCAO, data.Result[i].QT, true, true);
dataFC.Push(serie);
});
配列要素(int)でPush()を呼び出しています。ここで、配列でPush()を呼び出す必要があります。また、この方法で配列を処理/入力しても意味がありません。
for (var i = 0; i < rows - 1; i++)
{
for (var j = c; j < cols; j++)
{
myArray[i].Push(0);
}
}
for (var i = r; i < rows - 1; i++)
{
for (var j = 0; j < cols; j++)
{
col.Push(0);
}
}
if条件、if row <r、else if row> = rを使用して2つのループを結合することもできます。