Я ищу более элегантный и эффективный способ переключения объекта в массив.
Итак, мой приезд:
let arr = [
{id: 2},
{id: 3},
...
]
Теперь я делаю это так:
if (arr.find(function(element) { return element.id === upload.id } )) {
arr = arr.filter(function(element) {
return element.id !== upload.id;
});
}
else {
arr.push(upload)
}
Если вы часто переключаете объект, вы можете использовать хеш-таблицу для индексов массива.
var hash = Object.create(null);
function update(array, item) {
if (hash[item.id] !== undefined) {
array.slice(hash[item.id], 1);
hash[item.id] = undefined;
} else {
hash[item.id] = array.push(item) - 1;
}
}
const toggle = (arr, obj) => arr.includes(obj) ? arr.splice(arr.indexOf(obj), 1) : arr.push(obj);
const index = arr.findIndex(function(element) { return element.id === upload.id });
if (index > -1) {
arr.splice(index, 1);
}) else {
arr.push(upload);
}