Как получить все значения Объекта не перебирая ключи и не ссылаясь на них

244
02 декабря 2017, 11:11

Господа, у меня есть объект с разным уровнем вложенности. Как я могу получить то или иное значение я знаю, ниже есть наглядный пример:

var family = { 
  adults: { 
    granddad: { 
      name: 'Макар', 
      age: 76, 
      profession: 'Летчик', 
      pensioner: 'Да' 
 
 
    }, 
    grandmother: { 
      name: 'Валентина', 
      age: 72, 
      profession: 'Преподователь химии', 
      pensioner: 'Да' 
 
 
    }, 
    father: { 
      name: 'Виниамин', 
      age: 40, 
      profession: 'Художник', 
      pensioner: 'Нет' 
 
 
    }, 
    mother: { 
      name: 'Мария', 
      age: 38, 
      profession: 'Бухгалтер', 
      pensioner: 'Нет' 
    } 
  }, 
  сhildren: { 
    boys: { 
      adults: { 
        name: 'Макар', 
        age: 18, 
        learning: 'Летное училище' 
      }, 
      juvenile: { 
        name: 'Алексей', 
        age: 17, 
        learning: 'Средняя школа №1515' 
      } 
    }, 
    girls: { 
      adults: { 
        name: 'Елизавета', 
        age: 20, 
        learning: 'Консерватория' 
      }, 
      juvenile: { 
        name: 'Диана', 
        age: 12, 
        learning: 'Средняя школа №1515' 
      } 
    } 
  } 
}; 
 
 
var objectValues = ['Макар', 76, 'Летчик', 'Да', 'Валентина', 72, 'Преподователь химии', 'Да', 'Виниамин', 40, , 'Художник', 'Нет', 'Мария', 38, 'Бухгалтер', 'Нет', 'Макар', 18, 'Летное училище', 'Алексей', 17, 'Средняя школа №1515', 'Елизавета', 20, 'Консерватория', 'Диана', 12, 'Средняя школа №1515'] 
 
document.getElementById('wrapper').innerHTML += 'Так я получаю все ключи объекта family: <br/>' + '<code>\ 
	Object.keys(family.adults)<br/>\ 
	</code>' + Object.keys(family) + ' <hr/>  <br/>'; 
 
document.getElementById('wrapper').innerHTML += 'Так я могу получить любое значение: <br/>' + '<code>\ 
	familyhildren.boys.adults.name<br/>\ 
	</code>' + family.сhildren.boys.adults.name + ' <hr/>  <br/>'; 
document.getElementById('wrapper').innerHTML += '<p>' + objectValues + '</p>'
* { 
  margin: 0; 
  padding: 0; 
} 
 
html, 
body { 
  width: 100%; 
  height: 100%; 
  background: #272727; 
  color: white; 
} 
 
#wrapper { 
  width: 70%; 
  height: 70%; 
  font-size: 22px; 
  padding: 20px; 
} 
 
code { 
  color: orange; 
} 
 
p { 
  color: red; 
}
<div id="wrapper"></div>

Вопрос: как я могу получить все значения данного объекта (пример список красного цвета) со всеми вложенными значениями не ссылаясь на ключи. Одним словом я хочу получить массив как

objectValues

не набирая это все в ручную

Answer 1

var family = { 
  adults: { 
    granddad: { 
      name: 'Макар', 
      age: 76, 
      profession: 'Летчик', 
      pensioner: 'Да' 
 
 
    }, 
    grandmother: { 
      name: 'Валентина', 
      age: 72, 
      profession: 'Преподователь химии', 
      pensioner: 'Да' 
 
 
    }, 
    father: { 
      name: 'Виниамин', 
      age: 40, 
      profession: 'Художник', 
      pensioner: 'Нет' 
 
 
    }, 
    mother: { 
      name: 'Мария', 
      age: 38, 
      profession: 'Бухгалтер', 
      pensioner: 'Нет' 
    } 
  }, 
  сhildren: { 
    boys: { 
      adults: { 
        name: 'Макар', 
        age: 18, 
        learning: 'Летное училище' 
      }, 
      juvenile: { 
        name: 'Алексей', 
        age: 17, 
        learning: 'Средняя школа №1515' 
      } 
    }, 
    girls: { 
      adults: { 
        name: 'Елизавета', 
        age: 20, 
        learning: 'Консерватория' 
      }, 
      juvenile: { 
        name: 'Диана', 
        age: 12, 
        learning: 'Средняя школа №1515' 
      } 
    } 
  } 
}; 
Object.values(family.adults).forEach(function(snap) { 
	Object.values(snap).forEach(function(snap2) { 
		document.write(snap2) 
	}); 
}); 
 
Object.values(familyhildren).forEach(function(snap) { 
	Object.values(snap).forEach(function(snap2) { 
  	    Object.values(snap2).forEach(function(snap3) { 
    	        document.write(snap3); 
	    }); 
	}); 
});

READ ALSO
Как передать GET параметр

Как передать GET параметр

Всем привет! Столкнулся с задачей передачи GET параметра в ссылкуПри переходе к пример с фейсбука, нужно подставить в ссылку другой номер...

360
Как в Первой функции получить результат выполнения Второй?

Как в Первой функции получить результат выполнения Второй?

Всем привет! Подскажите, пожалуйста, у меня две функции: Первая формирует данные и передаёт их во Вторую, которая отправляет их на сервер

235
Добавление в таблицу

Добавление в таблицу

Есть список друзей в json

262
валидация полей

валидация полей

Доброго времени суток, есть скрипт на проверку поля логин к примеру

267