您正在循环,但使用的是硬编码索引...
@NinaScholz 答案是正确的,但我会更进一步,这样您就不必依赖数组大小:
var cars = [];
cars.push(["Volvo", "BMW", "Saab", "Land Rover"]);
cars.push([22, 15, 5, 17]);
cars.push([18, 13, 2, 15]);
var arrayLength = cars.length, // will output 3
carsLength = cars[0].length; // will output 4
for (var iCar = 0; iCar < carsLength; iCar++) {
var carLine = []; // to hold all values for this car
for(var iSize = 0; iSize < arrayLength; iSize++) {
// add all values for this car
carLine.push(cars[iSize][iCar]);
}
// print it by joining all car values
document.write(carLine.join(' - ') + '<br/>');
}
这样你就不会受限于数组的大小......例如,你可以很容易地拥有它:
cars.push(["Volvo", "BMW", "Saab", "Land Rover", "Mercedes"]);
cars.push([22, 15, 5, 17, 22, 32]);
cars.push([18, 13, 2, 15, 4, 5]);
代码将完美运行。
另外,一个改进是将数组排序添加到它自己的函数中并调用该函数,例如:
function getCarsWithFeatures(arr) {
var arrayLength = cars.length, // will output 3
carsLength = cars[0].length, // will output 4
allCars = [];
for (var iCar = 0; iCar < carsLength; iCar++) {
var carLine = []; // to hold all values for this car
for(var iSize = 0; iSize < arrayLength; iSize++) {
// add all values for this car
carLine.push(cars[iSize][iCar]);
}
// print it by joining all car values
allCars.push( carLine.join(' - ') );
}
return allCars;
}
然后你就可以轻松拥有了:
var cars = [];
cars.push(["Volvo", "BMW", "Saab", "Land Rover", "Mercedes", "Audi"]);
cars.push([22, 15, 5, 17, 22, 32]);
cars.push([18, 13, 2, 15, 4, 5]);
var allCars = getCarsWithFeatures(cars);
for(var i = 0; i < allCars.length; i++)
document.write( allCars[i] + '<br/>' );
注意:在写代码的时候,尽量不要重复自己写的方式,如果“源”发生变化,也是可以扩展的……