是否有可能像这样循环遍历数组。我想我需要改变数组数据的顺序。
阵列:
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;
for (var i = 0; i < arrayLength; i++) {
document.write(cars[0] + ' - ' + cars[1] + ' - ' + cars[2]);
}
结果
沃尔沃- 22 - 18
宝马- 15 - 13
萨博-5-2
路虎- 17 - 15
发布于 2015-12-13 10:21:56
你会发现把你的数据重组成更有意义的东西会更有用。这里我使用了一个对象:
var cars = {
'Volvo': [22, 18],
'BMW': [15, 13],
'Saab': [5, 2],
'Land Rover': [17, 15]
}
for (var p in cars) {
console.log(p + ' - ' + cars[p].join(' - '));
}
输出
Volvo - 22 - 18
BMW - 15 - 13
Saab - 5 - 2
Land Rover - 17 - 15
演示
发布于 2015-12-13 10:24:51
你在循环但使用硬编码的索引..。
@尼尼索尔兹的答案是正确的,但是我会更进一步,这样您就不会依赖于数组大小:
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/>' );
注意:在编写代码时,尝试以一种不重复的方式编写代码,如果“源”发生了更改,它是可扩展的.
发布于 2015-12-13 10:36:25
这就是"zip“函数可以帮助的地方。使用锁存库的示例
var tuples = _.zip(cars[0], cars[1], cars[2]);
然后按要求格式化:
tuples.forEach(function (tuple) {
document.write(tuple.join(' - ') + ' <br/>')
});
您可以简单地包括存档(取决于您处理依赖项的方式):
<script src="https://cdn.rawgit.com/lodash/lodash/3.0.1/lodash.min.js"></script>
https://stackoverflow.com/questions/34249915
复制相似问题