как использовать метод поиска для массива, содержащего пару координат? - PullRequest
1 голос
/ 17 июня 2020

У меня есть следующий класс. 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) в координатах array

if ( coordinatesStorage.find(Vector{x:3, y:4}) ) {
    gameOver = true;
}     // this code does not work

, к сожалению, вышеупомянутое - это мой неубедительный подход, который недействителен и возвращает ошибку консоли. Имею опыт работы на C ++. Я пытаюсь преобразовать свой код Cpp в JS.

, пожалуйста, помогите с этим кодом , чтобы узнать, существует ли координата (3,4) в массиве координат массив

1 Ответ

1 голос
/ 17 июня 2020

Функция 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...