@zwezew

Как рекурсивно получить примитивные свойства вложенных объектов?

Как правильно сделать здесь return, чтобы вернуло найденные значения?

var fractal = {
  a1: {
    b1: {
      c: 1
    },
    b2: {
      c: 222
    },
    b3: {
      c: {
        d: 33,
        e: 2.5,
        f: {
          g: 9999,
          h: {
            i: {
              j: 1001,
              k: 'строка',
              l: [1,2,3],
              m: function() {}
            }
          }
        }
      }
    }
  }
}


function getProp(o) {
  for(var prop in o) {
    if(typeof(o[prop]) === 'object') {
      getProp(o[prop]);         
    } else {
      //return o[prop];
      console.log(o[prop]);
    }
  }
}


getProp(fractal);

//console.log(getProp(fractal));
  • Вопрос задан
  • 346 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const getPrimitiveProps = (obj) =>
  Object.entries(obj).reduce((acc, [ k, v ]) => ({
    ...acc,
    ...(v instanceof Object ? getPrimitiveProps(v) : { [k]: v }),
  }), {});

или

const getPrimitiveProps = (obj) =>
  Object.assign({}, ...Object.entries(obj).map(([ k, v ]) =>
    v instanceof Object ? getPrimitiveProps(v) : { [k]: v }
  ));
Ответ написан
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
function getProp(o) {
    var result = [];
    for(var prop in o) {
        if(typeof(o[prop]) === 'object') {
            result = result.concat(getProp(o[prop]));
        }
    }
    return result;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы