Вы можете .filter
button удалить ненужную кнопку и переназначить ее массиву.
Удаление всего, что вы можете сделать, назначив blank array
: buttons = []
Чтобы получить уникальную кнопку, вы можете создать уникальную функцию.
function unique(buttons) {
let set = new Set();
let filtedBtns = [];
buttons.forEach((btn) => {
if (!set.has(btn.toString())) {
filtedBtns.push(btn);
set.add(btn.toString());
}
});
return filtedBtns;
}
var buttons = new Array();
function button(x, y, a, b) {
this.x = x;
this.y = y;
this.a = a;
this.b = b;
this.toString = () => {
return `${x}::${y}::${a}::${b}`;
};
}
playBtn = new button(500, 650, 50, 100);
tutorialBtn = new button(500, 760, 110, 160);
duplicateBtn = new button(500, 760, 110, 160);
scoreBtn = new button(500, 670, 180, 230);
buttons.push(playBtn, tutorialBtn, duplicateBtn, scoreBtn);
function unique() {
let set = new Set();
let filtedBtns = [];
buttons.forEach((btn) => {
if (!set.has(btn.toString())) {
filtedBtns.push(btn);
set.add(btn.toString());
}
});
return filtedBtns;
}
function deleteBtns(index) {
buttons = buttons.filter((_, i) => i !== index);
}
function deleteAll() {
buttons = [];
}
console.log(buttons);
deleteBtns(1);
buttons = unique(buttons)
console.log(buttons);
deleteBtns(1);
console.log(buttons);
deleteAll();
console.log(buttons);
Подход на основе классов:
class Button {
constructor(x, y, a, b) {
this.x = x;
this.y = y;
this.a = a;
this.b = b;
}
toHash() {
return `${this.x}::${this.y}::${this.a}::${this.b}`;
}
}
class Buttons {
constructor(...btns) {
this.buttons = btns;
}
unique() {
let set = new Set();
let filtedBtns = [];
this.buttons.forEach((btn) => {
if (!set.has(btn.toHash())) {
filtedBtns.push(btn);
set.add(btn.toHash());
}
});
this.buttons = filtedBtns;
}
deleteBtns(index) {
this.buttons = this.buttons.filter((_, i) => i !== index);
}
deleteAll() {
this.buttons = [];
}
}
let playBtn = new Button(500, 650, 50, 100);
let tutorialBtn = new Button(500, 760, 110, 160);
let duplicateBtn = new Button(500, 760, 110, 160);
let scoreBtn = new Button(500, 670, 180, 230);
const btns = new Buttons(playBtn, tutorialBtn, duplicateBtn, scoreBtn);
console.log(btns.buttons);
btns.unique(); // update unique
console.log(btns.buttons);
btns.deleteBtns(1); // delete by index
console.log(btns.buttons);
btns.deleteAll(); // delete all
console.log(btns.buttons);