Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想返回数组中对象的属性,但它会导致代码中的其他问题_Javascript_Function_Object_P5.js - Fatal编程技术网

Javascript 我想返回数组中对象的属性,但它会导致代码中的其他问题

Javascript 我想返回数组中对象的属性,但它会导致代码中的其他问题,javascript,function,object,p5.js,Javascript,Function,Object,P5.js,所以我用这个函数,应该是让一辆车换车道。只要我不返回车牌,它就会改变车道返回车辆对象列表[I]。但是,当我按照说明要求返回车牌时,汽车会停止变道返回车辆对象列表[I]。车牌号。详情如下: 功能移动车道(目标车) { /* 此功能应执行以下操作: -将目标车从一条车道移动到另一条车道。 -在没有任何额外动画的情况下,一步完成移动。 -使用车道位置a和车道位置b进行更改。 -最后,您应该在函数末尾返回target_car。 提示:您需要修改目标车的x属性。 */ 如果(检查车前(目标车)。x==车

所以我用这个函数,应该是让一辆车换车道。只要我不返回车牌,它就会改变车道
返回车辆对象列表[I]
。但是,当我按照说明要求返回车牌时,汽车会停止变道
返回车辆对象列表[I]。车牌号
。详情如下:

功能移动车道(目标车)
{
/*
此功能应执行以下操作:
-将目标车从一条车道移动到另一条车道。
-在没有任何额外动画的情况下,一步完成移动。
-使用车道位置a和车道位置b进行更改。
-最后,您应该在函数末尾返回target_car。
提示:您需要修改目标车的x属性。
*/
如果(检查车前(目标车)。x==车道位置a){
目标车。x=车道位置;
}   
否则{
目标车x=车道位置a;
}
}
功能检查CARINFORNT(carObj)
{
/*
此功能应执行以下操作:
-确定carObj是否在同一车道上,并且在车辆对象列表中的任何车辆后面小于200px。
-通过遍历vehicleObject_列表并将每辆车的距离_驱动特性与carObj的距离_驱动特性进行比较来实现此目的。
-如果您发现一辆车符合这些要求,则返回该车的车牌属性。否则返回false。
*/
对于(变量i=0;i0))
{
返回车辆对象列表[i]。车牌号;
}
}
返回false;
}
var车辆对象列表=[
{x:500,y:0,行驶距离:-200,汽车类型:'greenCar',车牌号:'MBH0WW',燃气量:2,排气量:[]},{x:500,y:0,行驶距离:200,汽车类型:'whiteCar',车牌号:'RLDGCM',燃气量:2,排气量:[]},{x:300,y:0,行驶距离:600,汽车类型:'whiteCar,车牌号:'9WG2XI',燃气量:2,排气量:[]]
Detective_CarObject=
{
x:roadLeftEdge+道路宽度/4,
y:550,
驱动距离:0,
燃气量:3,
EngineShudder_值:0,
汽车类型:“侦探”,
车牌号:“5L3UTH”,
排气:[]

}
您可以执行以下操作:

if(checkCarInfront(target_car) && target_car.x == Lane_Position_a ){
    target_car.x = Lane_Position_b;
} else {
    target_car.x = Lane_Position_a;
}
因为
checkCarInfront(target\u car)
将在匹配时返回一个车牌字符串(该字符串将作为非空字符串计算为true)。您可以将条件链接到具有
.x
属性的
target\u car
对象

确保手动测试数据。(例如,如果调用
checkCarInfront(Detective\u CarObject)
则当前
vehicleObject\u列表中的
Detective\u CarObject
值为假(由于
行驶距离
)但是,您可以临时将Detective_CarObject的x设置为
500
,并在列表中添加一辆额外的测试车来检查您的逻辑:
{x:500,y:0,行驶距离:199,车型:'rainbowCar',车牌:'R41NB0W',气量:2,排气:[]}

作为补充说明,我建议遵守JS命名约定。这里有几个例子:。
在过去,我会说选择一个(例如下划线/snake_case(例如
target_cat
)或camelCase(例如
checkCarInFront
)),但不是两者都选择并保持一致,但现在似乎大多数人都坚持camelCase。这样做将使以后在团队中工作以及共享/贡献开源库和项目变得更加容易。

checkCarInfront
返回一个
号码牌(或
false
),该号码牌很可能没有
x
属性hi@Andreas,谢谢您的评论,但这是说明中所说的。我必须返回一个号码牌或false。是的,但这应该告诉您当前的逻辑是错误的。当当前车道是汽车的属性时,为什么要使用
checkCarInFront
的返回值来检查当前车道。