Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

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

#javascript #объекты


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



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: 
' + '\ Object.keys(family.adults)
\
' + Object.keys(family) + '

'; document.getElementById('wrapper').innerHTML += 'Так я могу получить любое значение:
' + '\ family.сhildren.boys.adults.name
\
' + family.сhildren.boys.adults.name + '

'; document.getElementById('wrapper').innerHTML += '

' + objectValues + '

' * { 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; }
Вопрос: как я могу получить все значения данного объекта (пример список красного цвета) со всеми вложенными значениями не ссылаясь на ключи. Одним словом я хочу получить массив как objectValues не набирая это все в ручную


Ответы

Ответ 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(family.сhildren).forEach(function(snap) { Object.values(snap).forEach(function(snap2) { Object.values(snap2).forEach(function(snap3) { document.write(snap3); }); }); });

Комментариев нет:

Отправить комментарий