Как сравнить массив объектов, генерируемых автоматически, чтобы избежать двойного в нем? - PullRequest
0 голосов
/ 13 мая 2019

Я делаю арт-проект. В нем я отображаю изображения при нажатии клавиши. Например, если вы нажмете «а», отобразится изображение абстрактного «а». Проблема в том, что я хочу манипулировать этими изображениями после их отображения, поэтому я попытался поместить их в array, но из-за функции draw() в p5.js оно становится все больше и больше.

Я пытался сравнить объект, пока он создан, но он не работает, поэтому я ищу способ сравнить, существует объект или нет.

Мой код похож на:

draw() {
  if (letterToDisp != 0 && ){
    new Objet(temp, letterToDisp);//temp is a number random {0,1}
  }
}

function Objet(rand, lettre) {
  if (CheckIfExistObject(rand, lettre)) {
    img[nbLetter++] = new Img(rand, lettre);
  }
  else {
    new Img(rand, lettre);
  }
}

function CheckIfExistObject(alea, lettre) {
  var objectsAreSame = true;
  img.forEach(function (test) {
    if (test == new Img(alea, lettre)) {
      objectsAreSame = false;
      return objectsAreSame;
    }
  });

  return objectsAreSame;
}

Так что это порождает бесконечный массив object, поэтому я не замечаю, как их сравнивать и как их сравнивать. Где мне нужна помощь, это как построить мою CheckIfExistObject функцию.

1 Ответ

0 голосов
/ 14 мая 2019

Javascript

const pressedKeys = {};

function createImage(character) {
  const image = character;

  // ... you should actually build your image here  
  pressedKeys[character] = image;

  return image;
}

document.addEventListener('keypress', (event) => {
  const character = event.key.toLowerCase();
  const alreadyPressed = pressedKeys[character];

  return alreadyPressed || createImage(character);
});

Я думаю, это то, что вы ищете.В объекте pressedKeys вы отслеживаете уже нажатые клавиши.При каждом нажатии клавиши вы проверяете, нажата ли текущая клавиша, если это так, возвращайте то, что хотите сохранить.Если он еще не нажат, создайте новое изображение, сохраните его и верните для использования.

Надеюсь, это поможет!

...