如何比较自动生成的对象数组以避免在其中重复?

How to compare an array of object generate automatically to avoid double in it?

我正在做一个艺术项目。当按下一个键时,我会在其中显示图像。就像您按 "a" 它会显示抽象图像 "a"。问题是我想在显示这些图像后对其进行操作,因此我尝试将它们存储到 array 中,但由于 p5.js 的 draw() 函数,它变得更大并且大。

我尝试在创建对象时比较它们,但它不起作用所以我正在寻找一种方法来比较对象是否存在。

我的代码是这样的:

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 函数。

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 对象中,您可以跟踪已按下的键。在每次按键时,您检查当前键是否已被按下,如果是 return 您想要存储的任何内容。如果还没有按下,创建一个新图像,存储它并return它以便使用。

希望对您有所帮助!