javascript - 同时访问数组的所有元素
问题描述
我有两个包含一个圆形对象和一个墙对象的数组..
const allCircles = [circle1, circle2, circle3, circle4]; //
const allFunnelWalls = [funnelBottomLeft, funnelBottomRight, funnelLeft, funnelRight];
我有一个名为 collide 的函数,它接受两个数组作为参数,到目前为止,我让它适用于一个圆圈和墙壁,因为它使用相同的“i”索引访问两个数组中的元素我如何创建它以便我可以同时访问 allFunnelWalls 数组中的所有元素并针对每个圆圈进行测试?我尝试使用嵌套 for 循环的数组中的 every() 方法。我已经走到尽头了..帮助将不胜感激
function collide(array, array2){
for(i = 0; i < array.length; i++){
// Collision detection algorithm between circles + inner walls
let collision = lineCircle(array2[i].x, array2[i].y, array2[i].x2, array2[i].y2,
array[i].x, array[i].y, array[i].radius);
// Collision detection
if(collision){
array[i].colour = "green";
array[i].xSpeed = 0;
array[i].ySpeed = 0;
return true;
}else{
array[i].colour = "red";
return false;
}
}
}
解决方案
你可以试试嵌套地图。
function collide(array, array2) {
let results = array.map(circle => {
return array2.map(wall => {
// Collision detection algorithm between circles + inner walls
let collision = lineCircle(wall.x, wall.y, wall.x2, wall.y2,
circle.x, circle.y, circle.radius);
// Collision detection
if(collision) {
circle.colour = "green";
circle.xSpeed = 0;
circle.ySpeed = 0;
return circle;
}else{
circle.colour = "red";
return circle;
}
})
})
/* if you want to examine the results, you can do so here
[
{ colour: 'green', xSpeed: 0, ySpeed: 0 },
{ colour: 'green', xSpeed: 0, ySpeed: 0 },
{ colour: 'green', xSpeed: 0, ySpeed: 0 }
],
[
{ colour: 'red'}
],
*/
return results.any(result => result.colour === "green");
}
推荐阅读
- asp.net-core - 有没有办法在 .NET Core 的 OpenID 中更改用于 State 的值?
- python - py2exe制作的exe文件出现pystary错误
- powershell - Powershell 读取 zip 文件中的文件夹名称和计数文件
- javascript - 如何从markdown在javascript中创建目录解析器?
- python - 无法以 rb 重新打开 Django 文件
- azure - AKS 将 DNS 名称分配给专用 ClusterIP 地址
- python - 无法读取 null 的属性“EOL”
- powershell - 在 YAML 文件中调用 powershell 脚本
- linux - 主机操作系统上的 Laravel,虚拟机上的 Oracle 数据库无法通信
- javascript - 汗水警报仅删除第一行 asp.net core html jquery