Sat*_*nix 31 javascript loops multidimensional-array
从现在开始,我正在使用这个循环迭代数组的元素,即使我在其中放置具有各种属性的对象,它也能正常工作.
var cubes[];
for (i in cubes){
cubes[i].dimension
cubes[i].position_x
ecc..
}
Run Code Online (Sandbox Code Playgroud)
现在,让我们假设cubes []以这种方式声明
var cubes[][];
Run Code Online (Sandbox Code Playgroud)
我可以在Javascript中执行此操作吗?我怎样才能自动迭代
cubes[0][0]
cubes[0][1]
cubes[0][2]
cubes[1][0]
cubes[1][1]
cubes[1][2]
cubes[2][0]
ecc...
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,我可以声明:
var cubes[];
var cubes1[];
Run Code Online (Sandbox Code Playgroud)
并与两个数组分开工作.这是更好的解决方案吗?
icy*_*com 51
你可以这样做:
var cubes = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
for(var i = 0; i < cubes.length; i++) {
var cube = cubes[i];
for(var j = 0; j < cube.length; j++) {
display("cube[" + i + "][" + j + "] = " + cube[j]);
}
}
Run Code Online (Sandbox Code Playgroud)
工作jsFiddle:
以上输出:
cube[0][0] = 1
cube[0][1] = 2
cube[0][2] = 3
cube[1][0] = 4
cube[1][1] = 5
cube[1][2] = 6
cube[2][0] = 7
cube[2][1] = 8
cube[2][2] = 9
Run Code Online (Sandbox Code Playgroud)
bin*_*ous 15
var cubes = [["string", "string"], ["string", "string"]];
for(var i = 0; i < cubes.length; i++) {
for(var j = 0; j < cubes[i].length; j++) {
console.log(cubes[i][j]);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
循环数组的有效方法是内置数组方法.map()
对于一维数组,它看起来像这样:
function HandleOneElement( Cuby ) {
Cuby.dimension
Cuby.position_x
...
}
cubes.map(HandleOneElement) ; // the map function will pass each element
Run Code Online (Sandbox Code Playgroud)
对于二维数组:
cubes.map( function( cubeRow ) { cubeRow.map( HandleOneElement ) } )
Run Code Online (Sandbox Code Playgroud)
对于任何形式的n维数组:
Function.prototype.ArrayFunction = function(param) {
if (param instanceof Array) {
return param.map( Function.prototype.ArrayFunction, this ) ;
}
else return (this)(param) ;
}
HandleOneElement.ArrayFunction(cubes) ;
Run Code Online (Sandbox Code Playgroud)
试试这个:
var i, j;
for (i = 0; i < cubes.length; i++) {
for (j = 0; j < cubes[i].length; j++) {
do whatever with cubes[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)
有点晚了,但是这个解决方案很棒又整洁
const arr = [[1,2,3],[4,5,6],[7,8,9,10]]
for (let i of arr) {
for (let j of i) {
console.log(j) //Should log numbers from 1 to 10
}
}
Run Code Online (Sandbox Code Playgroud)
或您的情况:
const arr = [[1,2,3],[4,5,6],[7,8,9]]
for (let [d1, d2, d3] of arr) {
console.log(`${d1}, ${d2}, ${d3}`) //Should return numbers from 1 to 9
}
Run Code Online (Sandbox Code Playgroud)
注意: for ... of循环在ES6中是标准化的,因此仅当您具有ES5 Javascript编译器(例如Babel)时才使用此循环
另注:还有其他选择,但他们有一些细微的差别和行为,如forEach(),for...in,for...of和传统for()。取决于您的情况来决定使用哪个。(ES6还具有.map(),.filter(),.find(),.reduce())
| 归档时间: |
|
| 查看次数: |
124811 次 |
| 最近记录: |