是否可以使用箭头函数迭代嵌套数组?
Is it possible to iterate over nested arrays with arrow functions?
有点 JS n00b,刚开始等等,我目前有一个嵌套数组,我想轻松地更改其中的值。
var rects = [[new Rect, new Rect, new Rect, new Rect, new Rect],
[new Rect, new Rect, new Rect, new Rect, new Rect]]
现在我知道我总能做到
for(let i = 0; i < rects.length; i++){
for(let j = 0; j < rects[i].length; j++{
rects[i][j].pos.x = 30;
rects[i][j].pos.y = 30;
}
}
但我想知道我是否可以使用(因为缺乏更好的措辞)嵌套箭头函数来做类似
的事情
rects.forEach(rect => {
rect.forEach(thing => {
thing.pos.x = 30;
thing.pos.y = 30;
});
});
和上面的for循环有同样的效果吗?它们看起来干净多了,我的代码看起来像一堆英文老鼠窝。
简而言之:是的,你可以。如果您已经尝试过并且出现错误,那将是一个单独且更有用的问题。
一种适用于任何版本的 JS 的技术是使用 for 循环来获取对您要使用的对象的引用。您必须小心地将它与包含虚假值的数组一起使用,这在您的示例中并非如此。
for (var i = 0, r; r = rects[i]; i++) {
for (var j = 0, thing; thing = r[j]; j++) {
thing.pos.x = 30;
thing.pos.y = 30;
}
}
有点 JS n00b,刚开始等等,我目前有一个嵌套数组,我想轻松地更改其中的值。
var rects = [[new Rect, new Rect, new Rect, new Rect, new Rect],
[new Rect, new Rect, new Rect, new Rect, new Rect]]
现在我知道我总能做到
for(let i = 0; i < rects.length; i++){
for(let j = 0; j < rects[i].length; j++{
rects[i][j].pos.x = 30;
rects[i][j].pos.y = 30;
}
}
但我想知道我是否可以使用(因为缺乏更好的措辞)嵌套箭头函数来做类似
的事情rects.forEach(rect => {
rect.forEach(thing => {
thing.pos.x = 30;
thing.pos.y = 30;
});
});
和上面的for循环有同样的效果吗?它们看起来干净多了,我的代码看起来像一堆英文老鼠窝。
简而言之:是的,你可以。如果您已经尝试过并且出现错误,那将是一个单独且更有用的问题。
一种适用于任何版本的 JS 的技术是使用 for 循环来获取对您要使用的对象的引用。您必须小心地将它与包含虚假值的数组一起使用,这在您的示例中并非如此。
for (var i = 0, r; r = rects[i]; i++) {
for (var j = 0, thing; thing = r[j]; j++) {
thing.pos.x = 30;
thing.pos.y = 30;
}
}