JavaScript在两个不同的上下文中调用数组值

时间:2014-04-18 03:43:50

标签: javascript arrays function

我无法理解如何调用特定的数组值:
我在代码中注释了这些问题。请看一下,让我知道为什么数组在函数中产生一个结果,同时在它之外产生不同的结果。要运行代码,请使用repl.it等网站

var passengers = [ ["Thomas", "Meeks"], 
                   ["Gregg", "Pollack"], 
                   ["Christine", "Wong"], 
                   ["Dan", "McGaw"] ];

var results = passengers.map(function (array) {
    // The following prints out the first names--the entire first column.  Why? 
    console.log(array[0]);
});

console.log(); // Just empty space

// Why is the following only printin the first row of passengers (which it should), but the array[0] printed out the entirety of the first column?  
console.log(passengers[0]);

1 个答案:

答案 0 :(得分:2)

你有一个数组数组,所以当你在这里调用map时:

var results = passengers.map(function (array) {
    // The following prints out the first names--the entire first column.  Why? 
    console.log(array[0]);
});

它循环通过外部数组。传递给函数的参数是您要循环的数组元素,在本例中是内部数组。所以console.log(array[0])正在打印内部数组的第一个元素。

换句话说,这段代码大致相当于:

 console.log(passengers[0][0]);
 console.log(passengers[1][0]);
 console.log(passengers[2][0]);
 console.log(passengers[3][0]);

请注意,在此示例中,我只遍历外部数组(第一个索引)。内部数组索引保持为零。

但稍后你有

console.log(passengers[0]);

它只是从外部数组打印第一个元素,这是整个第一个内部数组。

进一步阅读