Maxla93: Метод splice() изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые. new_items.splice(a, 1); изменяет данные в items, new_items не является объектом (массивом) , это всего лишь ссылка на один физический объект.
Александр Дегтярев: lodash.set = set() создаст лишь очередной указатель (ссылку) на функцию set(), которая сразу же выполнится и вернет значение в переменную lodash.set а так как ретурна в функции сет нет, оно вернет туда undefined . очень рекомендую от корки до корки прочесть learn.javascript.ru . Его автор к обучению отнесся фундаментально и очень очень структурировано.
По идее nan дает ошибку по математике. Попробуй отловить ошибку руками, проверив все результаты вызовов формул и тп. Аожет быть у сафари метода какого нету))))))
Не вариант, если цепочка больше 2, надо писать функцию и по циклу перебирать элементы пока парент не станет нулем и потом выдавать результат в виде строки. Рекурсивные запросы типа with mysql не умеет