javascript - 如何比较自动生成的对象数组以避免重复?
问题描述
我正在做一个艺术项目。在其中,我在按下某个键时显示图像。就像如果您按“a”,它会显示抽象“a”的图像。问题是我想在显示这些图像后对其进行操作,因此我尝试将它们存储到一个中,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
功能。
解决方案
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
对象中,您可以跟踪已按下的键。在每次按键时,您检查当前键是否已被按下,如果是,则返回您想要存储的任何内容。如果尚未按下,则创建一个新图像,将其存储并返回以供使用。
希望能帮助到你!
推荐阅读
- android - Android Volley JsonObject put 过程
- sql - SQL如何查找存在或不存在的日期
- php - 在 Xpath 查询中排除链接
- python-3.x - 无法编写 Python 函数
- django - 我如何在同一个 apache2 服务器上托管 python2 和 python3 应用程序?
- git - 为什么某些 git 命令在通过 crontab 运行时会失败?
- python - 如何使用变形网格扭曲图像
- html - 锚标记设置为内联但仍占用所有空间
- c# - SSDT - 仅在项目更改时自动增加 DACPAC 版本
- react-native - 如何检查 React Native 上浪费的渲染?