7

JavaScript で 2 次元配列を作成してアクセスする方法について混乱しています。以下は、人の名前とその画像の src を格納する配列宣言です。myArray[0][0] 要素にアクセスしようとすると「D」が表示され、myArray[0,0] にアクセスしようとすると Donald Duck が表示されます。img src myArray[0][0] = "assets/scrybe.jpg" にアクセスするにはどうすればよいですか?

JS コード:

var myArray = new Array(1);

myArray[0] = "Donald Duck";
myArray[1] = "Winnie Pooh";
myArray[2] = "Komal Waseem";
myArray[3] = "Hockey";
myArray[4] = "Basketball";
myArray[5] = "Shooting";
myArray[6] = "Mickey Mouse";

myArray[0][0] = "assets/scrybe.jpg";
myArray[1][0] = "assets/scrybe.jpg";
myArray[2][0] = "assets/scrybe.jpg";
myArray[3][0] = "assets/scrybe.jpg";
myArray[4][0] = "assets/scrybe.jpg";
myArray[5][0] = "assets/scrybe.jpg";
myArray[6][0] = "assets/scrybe.jpg";
4

4 に答える 4

15

まず、配列を作成するには、角括弧表記([])を使用することをお勧めします。

var myArray = [];

これは、JavaScriptで多次元配列をエミュレートする方法です。アレイ内の1つ以上のアレイです。

var myArray = [
    [], [] // two arrays
];

配列を多次元として宣言する方法があるかどうかを尋ねている場合は、ありません。次のようにアクセスできます。

myArray[0][0]; // the 1st element of the first array in myArray
myArray[1][1]; // the 2nd element of the second array in myArray

おそらく探していたコードは次のとおりです。

var myArray = [
    ["Donald Duck", "assets/scrybe.jpg"],
    ["Winnie Pooh", "assets/scrybe.jpg"],
    ["Komal Waseem", "assets/scrybe.jpg"]
    [/* and so on...*/]
];

ただし、すべての名前に同じURLを指定しているため、for代わりにループを使用してこれをより高速に行うことができます。

for (var i = 0; i < myArray.length; i++) {
    myArray[i][1]  = "assets/scrybe.jpg";
}
于 2012-09-29T13:01:49.100 に答える
6

おそらく、本当に必要なのはオブジェクトの配列です。

var myArrray = [
  { name: "Donald Duck", image: "assets/scrybe.jpg" },
  { name: "Winnie Pooh", image: "assets/scrybe.jpg" },
  // ...
];

JavaScriptには、実際には2次元配列はありません。できることは、各要素が配列になるように配列を作成することです。

var twoDim = [ [], [], [], [], [] ];

しかし、あなたの場合、構造はあまり役に立たないと思います。

于 2012-09-29T12:59:30.623 に答える
0

いいえ、そのようにすることはできません。次のいずれかを行う必要があります。

var myArray = new Array(1);

myArray[0] = new Array(1);

myArray[0][0] = "Donald Duck";
myArray[0][1] = "assets/scrybe.jpg";

またはJS構文を使用します

var myJSObj = {"Donald" :"assets/scrybe.jpg", "Donald2": "assets/scrybe2.jpg" };
于 2012-09-29T12:59:39.797 に答える
0

同じ問題があり、Lodash の minBy を使用しました

https://lodash.com/docs/4.17.4#minBy

var objects = [{ 'n': 1 }, { 'n': 2 }];

_.minBy(objects, function(o) { return o.n; });
// => { 'n': 1 }

// The `_.property` iteratee shorthand.
_.minBy(objects, 'n');
// => { 'n': 1 }
于 2017-03-15T16:34:27.597 に答える