Aetae, ваша философия «отбрасывания концов», которая якобы чётко и явно объявляет, что «дальше дороги нет» порождает в общем неочевидный код. Например, непонятно, куда возвращается true, если согласно сигнатуре метода forEach он не работает с возвращаемым значением. А если функции нет, то произойдёт преждевременный return. Может лучше вынести ветвление в отдельный метод?
Цитата:
function uniqSelected(...arrays) { const result = [], map = {} for(const array of arrays) for(const item of array) if(item.id in map) map[item.id].selected = true else result.push(map[item.id] = { ...item }) return result } Если всё-таки вынести в отдельный метод... если if-else вынести в отдельный метод, то «внутренний интерпретатор» Aetae будет выполнять одинаковую последовательность команд. function uniqSelected(...arrays) { const result = [], map = {} for(const array of arrays) for(const item of array) pushOrMarkAsSelected(item, result, map) return result } function pushOrMarkAsSelected(item, result, map) { if(item.id in map) map[item.id].selected = true else result.push(map[item.id] = { ...item }) } ЕЩЁ Хотя философия «отбрасывания концов» в большинстве случаев может заменена более подходящими идеями, она определённо работает, когда вам не нужно выполнение (или оно может быть завершено раннее), поскольку не подходят условия... Например... function submit() { let name, address, phone if(name = nameField.value) {} else { alert("No name to submit") return } if(address = addressField.value) {} else { alert("No address to submit") return } if(phone = phoneField.value) {} else { alert("No phone to submit") return } sendToServer(name, address, phone) } function sendToServer(name, address, phone) { // ... } |
Часовой пояс GMT +3, время: 12:21. |