猿问

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

我有这门课如下。x 和 y 是二维坐标


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)


狐的传说
浏览 67回答 1
1回答

一只甜甜圈

find数组上的函数接收一个函数作为其第一个参数。该函数接收对数组中元素的引用,然后您必须返回true或false获取该元素。如果您希望find函数将该元素作为找到的元素返回,则返回true. 例如,这样的事情应该可以工作:if (coordinatesStorage.find(v => v.x === 3 && v.y === 4)) {这表明它应该返回元素属性coordinatesStorage所在的第一个元素,并且它的为。x3y4请注意,该v =>部分是箭头函数表达式的开头,其中v是函数的参数,表示数组中正在测试的元素。它也可以扩展为像这样的常规函数定义:function vectorPredicate(vector) {     return vector.x === 3 && vector.y === 4;   }然后,您也可以将该定义的函数传递给find调用,它的工作方式相同:if (coordinatesStorage.find(vectorPredicate)) {查看 MDN 关于Array.prototype.find的文章以获取更多详细信息。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答