7

我对如何在 javascript 中创建和访问二维数组感到困惑。下面是一个数组声明,我在其中存储人的姓名,然后是他们图像的 src。当我尝试访问 myArray[0][0] 元素时,我得到“D”,当我尝试访问 myArray[0,0] 时,我得到唐老鸭。如何访问 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 中模拟多维数组的方式。它是一个数组中的一个或多个数组。

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 实际上并没有二维数组。您可以做的是创建一个数组,使每个元素也是一个数组。

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 回答