Size: a a a

2021 March 22

DV

Dmitry Vegner in pro.js
Artyom
Лучше превратить список ресторанов в объект, где ключ - уникальный идентификатор ресторана.
Потому что проверка уникальности в массиве при добавлении выльется в O(n^2) алгоритм.
Ну либо просто сделать в начале объект типа:
const restorantsIds = this.restorants.reduce((acc, restaurant) => {
 acc[restaurant.id] = true;
 return acc;
}, {});
и потом уже проверять:
if (!(restourant.id in restorantsIds)) this.mainFilter.push(restourant)
;
Еба, вот за такими ответами я здесь и сижу.
источник

БО

Богдан Ошовський... in pro.js
Dmitry Vegner
Еба, вот за такими ответами я здесь и сижу.
👍
источник

В

Виктория in pro.js
Богдан Ошовський
Ребята кто может глянуть 111 строка, я не понимаю как правильно сделать запись что бы цикл правильно отработал и вывелась пагинация, подскажите плиз!!! https://codepen.io/Bodfx/pen/RwKbBoq
Тебе нужно каждый раз НОВЫЙ элемент ссылки создавать при добавлении. А так ты в цикле один и тот же элемент аппендишь, в итоге он у тебя в списке всегда один.
источник

БО

Богдан Ошовський... in pro.js
Виктория
Тебе нужно каждый раз НОВЫЙ элемент ссылки создавать при добавлении. А так ты в цикле один и тот же элемент аппендишь, в итоге он у тебя в списке всегда один.
Это я знаю)) Я не понимаю как мне правильно записать что бы каждый раз создавался новый елемент. Понимаю только таким способом  this.view.paginLi.innerHTML += <li class="pageNumber"><a href="#">${i}</a></li> Но он мне не походит
источник

РК

Рома Кочережченко... in pro.js
let obje = [
 { id: 0, name: 'Name' },
 { id: 1, name: 'Name2' },
 { id: 2, name: 'Name3' },
]
function deleteInstanseById(idx, o) {
 o = o.filter(function (e) {
   return e.id != idx
 })
}
deleteInstanseById(1, obje)
console.log(obje) // тот же массив
Здравствуйте, почему функция не удаляет элемент из массива?
источник

СО

Сергей Овсянников... in pro.js
Рома Кочережченко
let obje = [
 { id: 0, name: 'Name' },
 { id: 1, name: 'Name2' },
 { id: 2, name: 'Name3' },
]
function deleteInstanseById(idx, o) {
 o = o.filter(function (e) {
   return e.id != idx
 })
}
deleteInstanseById(1, obje)
console.log(obje) // тот же массив
Здравствуйте, почему функция не удаляет элемент из массива?
Ты нигде не меняешь изначальный массив
функция filter работает с копией массива и возвращает новый массив с подходящими под условия элементами
источник

РК

Рома Кочережченко... in pro.js
Сергей Овсянников
Ты нигде не меняешь изначальный массив
функция filter работает с копией массива и возвращает новый массив с подходящими под условия элементами
но я же делаю o = o.filter
источник

РК

Рома Кочережченко... in pro.js
это разве не меняет массив?
источник

РК

Рома Кочережченко... in pro.js
я гуглил долго, честное слово, но так и не понял как исправить
источник

СО

Сергей Овсянников... in pro.js
Рома Кочережченко
но я же делаю o = o.filter
Сори, не заметил, сначала
источник

РК

Рома Кочережченко... in pro.js
при этом если глобально менять в функции, то все работает
источник

РК

Рома Кочережченко... in pro.js
но глобально — грех, и я так не хочу
источник

A

Artyom in pro.js
Рома Кочережченко
но я же делаю o = o.filter
O внутри функции - это локальная ссылка, она не изменит объект снаружи.
В некоторых языках для этого есть специальные конструкции, позволяющие захватить переменную, но не в JS.
источник

СО

Сергей Овсянников... in pro.js
Там в замыкании проблема
У тебя o в функции - правильное будет, а объект снаружи не поменяется
Всё так и должно быть
источник

РК

Рома Кочережченко... in pro.js
Artyom
O внутри функции - это локальная ссылка, она не изменит объект снаружи.
В некоторых языках для этого есть специальные конструкции, позволяющие захватить переменную, но не в JS.
воу, и что же делать, если через фильтр чешется?
источник

A

Artyom in pro.js
Рома Кочережченко
воу, и что же делать, если через фильтр чешется?
Лучше всего делать чистую функцию, которая не меняет исходный объект, как сам filter/map.
источник

РК

Рома Кочережченко... in pro.js
Artyom
Лучше всего делать чистую функцию, которая не меняет исходный объект, как сам filter/map.
у меня "проектировка" базы данных, база данных с функциональными структурами — извращение, как по мне
источник

Ю

Юра in pro.js
Извините за нубский вопрос: как мне разбить масив в столбик и вставить в html? Т.е. не инлайном, а блоком? 🤦
источник

СО

Сергей Овсянников... in pro.js
Рома Кочережченко
у меня "проектировка" базы данных, база данных с функциональными структурами — извращение, как по мне
Дак у тебя сейчас не в функциональном стиле ниразу, чистая функция не должна исходные данные менять
Либо, как предложил человек выше, либо написать класс, в котором у тебя будет поле this.obje и в методе объекта менять this.obje
источник

СО

Сергей Овсянников... in pro.js
Либо, в прототипе массива написать свою функцию
источник