1

JavaScript を使用してこの配列を作成したい:

    -----------------------------------------------
    |                     |         male          |
    |                     |-----------------------|
    |   rafael            |         single        |
    |                     |-----------------------|
    |                     |          22           | 
    |---------------------|-----------------------|
    |                     |         male          |
    |   jack              |-----------------------|
    |                     |         married       |      
    |                     |-----------------------|
    |                     |         34            |
    -----------------------------------------------

そして、それを作る方法について多くのことを考えた後、私はこれを使用しました:

var arr = [];
for(i = 0 ; i < 2 ; i++){
    arr[i] = [2]
    for (j = 0; j < 3 ; j++){
        arr[i][1] = [3];
        arr[i][1][j] = "this is row :" + i + ", column : 1, row : " + j ;
        console.log(arr[i][1][j]);
    }
}

これを達成するためにオブジェクトコンストラクタまたはオブジェクトリテラルを使用する他の方法はありますか? そんな風にアクセスしたいから

obj["first row"]["third row in second column"]

ユーザーが各セルに値を入力して、次のように呼び出してほしい:

obj["rafael"]["age"];

行数がわからないことに注意してください。そこに任意の値と任意のセル名を入力するだけです。

4

5 に答える 5

2

とにかくオブジェクトのように使用しているため、配列ではなくオブジェクトにします。(整数インデックスと長さプロパティを使用していない場合でも、基本的なオブジェクトのように配列を使用します。すべての配列はオブジェクトであり、すべてのオブジェクトが配列であるとは限りません。)

nullもちろん、使用する値に置き換えてください。または、プレースホルダーとして残すこともできます。

var a = {
  "first row": {
    "first row in second column": null,
    "second row in second column": null,
    "third row in second column": null
  },
  "second row": {
    "first row in second column": null,
    "second row in second column": null,
    "third row in second column": null
  }
}

ああ、動的にする場合は、次のようにします。

var folk = {};  // Our basic place holder.
var person = {};  // The 'inner information' to populate.
person.married = true;
person.age = 41;
person.address = "777 Heaven's Gate";
folk["Jeremy J Starcher"] = person;

// Next person
person = {};
person.gender = 'male';
person.insurance = true;
folk["John Doe"] = person;

window.alert(folk["John Doe"]["gender"]);
window.alert(folk["John Doe"].gender);
于 2012-08-31T15:16:43.963 に答える
0

これにより、動的プロパティを持つオブジェクトが得られます。

var arr = new Object();
for(i = 0 ; i < 2 ; i++){
    var rowName = "row"+i;
    arr[rowName] = new Object();
    for (j = 0; j < 3 ; j++){
        var colName = "col"+j;
        arr[rowName][colName] = "this is row " + i + ", column " + j;
    }
}
console.log(arr);
于 2012-08-31T15:27:34.120 に答える
0

次の方法でデータをセルにマップします。

    -----------------------------------------------
    | arr[0].left         | arr[0].right[0]       |
    |                     |-----------------------|
    |                     | arr[0].right[1]       |
    |                     |-----------------------|
    |                     | arr[0].right[2]       | 
    -----------------------------------------------
    | arr[1].left         | arr[1].right[0]       |
    |                     |-----------------------|
    |                     | arr[1].right[1]       |
    |                     |-----------------------|
    |                     | arr[1].right[2]       | 
    -----------------------------------------------

あなたはそれを行うことができます:

var arr = []

for(var i = 0; i < rows; i++) {
    arr[i] = {
        left: "someText",
        right: [
            "some",
            "more",
            "text"
        ]
    };
}
于 2012-08-31T15:27:55.587 に答える
0

文字列名で要素にアクセスする場合は、オブジェクトを使用する必要があります。配列は数値インデックスのみをサポートします。

var data = {
    'first row': {
        'first column': 'foo',
        'second column': 'bar',
        'third column': 'baz'
    },
    'second row': {
        'first column': 'foo',
        'second column': 'bar',
        'third column': 'baz'
    }
};

data['first row']['first column']; // gives you 'foo' 

キー名に無効な識別子文字 (この場合はスペース) が含まれている場合にのみ、キー名を引用する必要があることに注意してください。

于 2012-08-31T15:19:21.353 に答える
0

編集内容を確認して、次のいずれかを行います。

var data = {
    rafael: {
        gender: "male",
        status: "single",
        age: "22"
    },
    jack: {
        gender: "male",
        status: "married",
        age: "34"
    }
};

また

var data = [{
    name: "rafael",
    gender: "male",
    status: "single",
    age: "22"
}, {
    name: "jack",
    gender: "male",
    status: "married",
    age: "34"
}];
于 2012-08-31T15:32:53.150 に答える