>我有这个类如下。 x 和 y 是 2D 坐标
class Vector {
constructor(x, y) {
this.x = x;
this.y = y;
}
}
我有一个数组来存储坐标 x 和 y
const coordinatesStorage = [];
coordinatesStorage.push(new Vector(1, 2));
coordinatesStorage.push(new Vector(3, 4));
coordinatesStorage.push(new Vector(4, 6));
我想找出坐标存储数组中是否存在坐标 (3,4(
if ( coordinatesStorage.find(Vector{x:3, y:4}) ) {
gameOver = true;
} // this code does not work
不幸的是,上面提到的是我蹩脚的方法,它是无效的,并且返回控制台错误。 我有C++背景。我正在尝试将我的 Cpp 代码转换为 JS。
请帮助该代码查找坐标存储数组中是否存在坐标 (3,4(
数组上的find
函数接收一个函数作为其第一个参数。该函数接收对数组中元素的引用,然后您必须返回true
或false
。如果希望find
函数将该元素作为找到的元素返回,则返回true
。例如,这样的事情应该有效:
if (coordinatesStorage.find(v => v.x === 3 && v.y === 4)) {
这说明它应该返回coordinatesStorage
中的第一个元素,其中元素的x
属性为3
,其y
为4
。
请注意,v =>
部分是箭头函数表达式的开头,其中v
是表示数组中正在测试的元素的函数的参数。或者,也可以将其扩展为常规函数定义,如下所示:
function vectorPredicate(vector) {
return vector.x === 3 && vector.y === 4;
}
然后,您也可以将该定义的函数传递到find
调用中,它将以相同的方式工作:
if (coordinatesStorage.find(vectorPredicate)) {
查看MDN在Array.prototype.find上的文章以获取更多详细信息。