Как выводить свойства объекта, проверяя тип, и если что выполняя свойства, которые явл. функциями?

Есть такая задачка:

// выполнить вывод в консоль всех свойств объекта, перенося дочерние свойства на новую строку
// если свойство имеет тип Function не выводить в консоль, а вызвать функцию

let data = {
  a: {a: 1,
       b: {a: 3,b: 10},
       c: 14},
  b: {f: function () {console.log("this is function");},
      a: "123"}
  };
showNodes(data);

function showNodes(element) {
  console.log(element);
}
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
https://jsfiddle.net/yarkov_aleksei/okhembrj/

function isObject(val) {
  return val instanceof Object; 
}

let data = {
  a: {
    a: 1,
    b: {a: 3,b: 10},
    c: 14
  },
  b: {
    f: function () {
      console.log("this is function 'f'");
    },
    a: "123"
  }
};

showNodes(data);

function showNodes(element, parent) {
  for(let key in element) {
    const elkey = element[key];
    const keyName = parent ? `${parent}.${key}` : key;
    if(typeof elkey === 'function') {
      console.log(keyName, 'is function');
      elkey();
    }
    else if(isObject(elkey)) {
      showNodes(elkey, keyName);
    }
    else {
      console.log(keyName, elkey);
    }
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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