Сообщение от Kolyaj
|
Для такого случая как раз нужно указывать reduceInit: 0, т.к. иначе в первой итерации sum будет равна ссылке на элемент. По сути можно и условие из filter туда же засунуть, это на любителя, я предпочитаю разбивать задачи на более мелкие более простые подзадачи.
|
подожди, я имел в виду с другой реализацией
var reduceValue = options.reduceInit;
for( var i=0, j=0; i<els.length; i++ ) {
...
if( options.reduce )
reduceValue = options.reduce.call( options.scope, reduceValue, el, j );
и реализация стала проще. Можно добавить еще значение по умолчанию 0/пустая строка/whatever
Сообщение от Kolyaj
|
Это библиотечка, т.е. код с высокой реюзабельностью, поэтому для данного кода я ищу компромисс "эффективность кода -- максимально малый размер -- приемлемая читабельность"
|
а размер зачем? А как ты решения принимаешь? На глаз?Я пока рассчитываю, что, по-крайней мере в большинстве случаев, не имеет смысла жертвовать читабельностью ради производительности. В частности, если не пытаться реализовать поиск по сферическим селекторам в вакууме
Ну и я не говорил, что нужно воспринимать тот код, как готовые решения. Можно, например, просто парсинг селекторов вынести