Aetae, ваша философия «отбрасывания концов», которая якобы чётко и явно объявляет, что «дальше дороги нет» порождает в общем неочевидный код. Например, непонятно, куда возвращается true, если согласно сигнатуре метода forEach он не работает с возвращаемым значением. А если функции нет, то произойдёт преждевременный
return. Может лучше вынести ветвление в отдельный метод?
Сообщение от рони
|
может else будет лучше смотреться, чем 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) {
// ...
}