чтобы разворачивало даже сложный объекты, типа obj.aq.bw.ce со всех уровней вложенности?
а вы себе это ккак представляете, в каком виде
Мне кажется, тут можно прописать через замыкание
ну хотелось бы в упрощенном ))
удивлен, что нет первой ссылки в гугле (
звучит как рекурсия https://stackoverflow.com/questions/15690706/recursively-looping-through-an-object-to-build-a-property-list
это реальная какая-то задача или что?
Ну в целом да, я детали опущу, как бы есть функция, которая локализацию в темплейт подтянуть должна, ну проблема в одной страничке, она энивей будет, ну и я думал ключик кинуть на получение и значение получить назад, но json хотелось бы красивым оставить, типа имена кнопок в разделе кнопок, а без такого раскрытия придется либо парсить путь по свойствам, либо json лепить сплошняком. Я почему-то кроме рекурсии сразу ничего не придумал, подумалось ,что метод какой забыл, судя по всему нет
я к тому, что в каком виде это надо, если у вас вложенный объект { a: { b: 5 } } как это должно сработать?
lodash
Ну по задумке все должно раскрыться было в "ключ - значение" :D
ну так если у вас в значении объект, то что там будет-то для вашей ситуации?
блин, вооот, помню что-то там было такое, но вообще не гуглится что, много времени прошло, память уже не та ))
да было что-то для полного раскрытия, может из лодаша, я помню что где-то применял. или желаемое за действительное (
Просто раньше называлась _underscore
я вам дал пример объекта, скажите, во что он должен преобразоваться
ключ - значение. Как Object.entries ток в глубину до талого.
ну я же вас попросил конкретный пример и дал описание, это оно или что? 😢
так и не дождался от вас. накидал быренько. о скорости нет смысла говорить, тут всё плохо наверняка, но и не об этом речь надеюсь, никогда не увидеть такого в продакшене const isObject = obj => obj === Object(obj); const arrayify = obj => Object.entries(obj).map(([k, v]) => isObject(v) ? supaDupaEntries(v) : [k, v]); const pairs = arr => arr.reduce((acc, _, idx, src) => idx % 2 === 0 ? [...acc, src.slice(idx, idx + 2)] : acc, []); const supaDupaEntries = obj => pairs(arrayify(obj).flat(Infinity)); console.log(supaDupaEntries({ a: { b: { c: 3, b: 4 }, d: 6 } }))
Альтернативный подход. function pupaLupaEntries (obj) { let result = Object.entries(obj) for (let i = 0; i < result.length; i++) { const value = result[i][1] if (value === Object(value)) { result.splice(i, 1) result = result.concat(Object.entries(value)) i-- } } return result }
ну как-то нехорошо массив менять во время итерации... хотя нет, стоп, отличное решение. я бы только, может,название чуть изменил в известном направлении можем организовать npm-пакет с нашаими решениями
Обсуждают сегодня