如何在包含坐标对的数组上使用查找方法?



>我有这个类如下。 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函数接收一个函数作为其第一个参数。该函数接收对数组中元素的引用,然后您必须返回truefalse。如果希望find函数将该元素作为找到的元素返回,则返回true。例如,这样的事情应该有效:

if (coordinatesStorage.find(v => v.x === 3 && v.y === 4)) {

这说明它应该返回coordinatesStorage中的第一个元素,其中元素的x属性为3,其y4

请注意,v =>部分是箭头函数表达式的开头,其中v是表示数组中正在测试的元素的函数的参数。或者,也可以将其扩展为常规函数定义,如下所示:

function vectorPredicate(vector) {
return vector.x === 3 && vector.y === 4;
}

然后,您也可以将该定义的函数传递到find调用中,它将以相同的方式工作:

if (coordinatesStorage.find(vectorPredicate)) {

查看MDN在Array.prototype.find上的文章以获取更多详细信息。

最新更新