JavaScript: итерация по объекту (не может вернуть ответ) - PullRequest
0 голосов
/ 02 июля 2019

Я хочу перебрать весь объект, чтобы пройти все значения в данном объекте.

Я пытался и был довольно успешным, но, поскольку я использую функцию, мне нужно вернуть ответ, но я не могу это сделать. Ниже мой код, который я попробовал.

var d = {
    name: "Simon",
    age: "20",
    clothing: {
        style: "simple",
        hipster: false
    }
}
function deep(target){
    if(typeof target === 'object'){
      for(const key in target){
        deep(target[key]);
      }
    }
    else{
      console.log(target);
    }
  }
  deep(d);

мой ответ правильный, так как печатается как:

Simon
20
simple
false

Мне просто нужно вернуть этот ответ.

Ответы [ 2 ]

3 голосов
/ 02 июля 2019

Объявление массива, добавление элементов в этот массив.Наконец, присоедините массив к \n и верните:

var d = {
    name: "Simon",
    age: "20",
    clothing: {
        style: "simple",
        hipster: false
    }
}
var res = [];
function deep(target){
  if(typeof target === 'object'){
    for(const key in target){
      deep(target[key]);
    }
  }
  else{
    res.push(target);
  }
  return res.join('\n');
}
console.log(deep(d));
0 голосов
/ 02 июля 2019

Вы можете сделать это, просто следя за тем, что вы возвращаете, и как вы объединяете результаты рекурсии.Вам не нужен внешний массив:

var d = {
    name: "Simon",
    age: "20",
    clothing: {
        style: "simple",
        hipster: false
    }
}

function deep(target){
    return typeof target !== 'object' || target === null
        ? [target]
        : [].concat(...Object.values(target).map(deep))
}

console.log(deep(d))

Если вам нужна строка, конечно, вы можете просто join() массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...