Первый раз здесь.
Я нашел эту полезную функцию @CertainPerformance для рекурсивного поиска вложенных элементов по идентификатору.
const findItemNested = (arr, itemId, nestingKey) => (
arr.reduce((a, item) => {
if (a) return a;
if (item.id === itemId) return item;
if (item[nestingKey]) return findItemNested(item[nestingKey], itemId, nestingKey)
}, null)
);
Я не могу понять синтаксис для создания этого Функционирование метода в объекте util. Следующий синтаксис не работает:
var util = {
const findItemNested = (arr, itemId, nestingKey) => (
arr.reduce((a, item) => {
if (a) return a;
if (item.id === itemId) return item;
if (item[nestingKey]) return findItemNested(item[nestingKey], itemId, nestingKey)
}, null)
);
}
Насколько мне известно, синтаксис должен быть примерно таким:
var util = {
findItemNested: function (arr, itemId, nestingKey) => (
arr.reduce((a, item) => {
if (a) return a;
if (item.id === itemId) return item;
if (item[nestingKey]) return findItemNested(item[nestingKey], itemId, nestingKey)
}, null)
);
}
Но этот синтаксис, конечно, не работает. Я попытался вернуть синтаксис функции стрелки в обычный синтаксис функции следующим образом (обратите внимание, что я изменил скобки, необходимые для функции стрелки, чтобы возвращать литерал объекта в фигурные скобки, чтобы соответствовать синтаксису, необходимому для метода объекта).
var util = {
findItemNested: function (arr, itemId, nestingKey) => {
arr.reduce((a, item) => {
if (a) return a;
if (item.id === itemId) return item;
if (item[nestingKey]) return findItemNested(item[nestingKey], itemId, nestingKey)
}, null)
}
}
Однако, хотя нет ошибки компиляции или времени выполнения, этот синтаксис приводит к тому, что функция возвращает неопределенный, а не находит существующий вложенный элемент.
Единственный способ, которым я могу это сделать заставить эту функцию работать, чтобы она была установлена как глобально доступная функция с исходным синтаксисом из @CertainPerformance в моем скрипте. js file.
Есть ли способ добавить эту функцию в мой var util ? Заранее спасибо.