JavaScript: захватить каждый вложенный объект / выровнять только верхний уровень объекта - PullRequest
1 голос
/ 10 марта 2020

Таким образом, в настоящее время у меня есть часть массива объектов, которая выглядит следующим образом:

props: {
       dog: {
         default: '',
         type: String
       },
       cat: {
         default: '',
         type: String
       },
       bird: {
         default: '',
         type: String
       }
      },
      {
       dog: {
         default: '',
         type: String
       },
       bird: {
         default: '',
         type: String
       },
       fish: {
         default: '',
         type: String
       }
     }

Я хочу существенно сгладить верхний уровень массива объектов, чтобы он содержал все вложенные объекты. на том же уровне (и, очевидно, без дубликатов), например так:

{
   dog: {
     default: '',
     type: String
   },
   bird: {
     default: '',
     type: String
   },
   fish: {
     default: '',
     type: String
   }
}

Было бы намного проще, если бы я знал, какие ключи всегда будут в структуре, однако я не знаю, поэтому я необходимо иметь возможность проходить через него oop без указания имен ключей. Я попытался по крайней мере захватить каждый отдельный вложенный объект и pu sh каждый в массив, подобный этому:

const newArray = [];

for (let i = 0; i < objSize; i++) {
    // checks if properties exist
    if (JSON.stringify(petObj[i].options.props) !== '{}') {
      newArray.push(petObj[i].options.props);

      const numProps = Object.keys(newArray[i]).length;

      for (let j = 0; j < numProps.length; j++) {
        console.log(petObj[i].options.props[j]);
    }
  }

, но это, похоже, не работает, так как я получаю нулевые / неопределенные ошибки после добавив внутренний для l oop. Кто-нибудь хочет предложить возможное решение?

1 Ответ

2 голосов
/ 10 марта 2020

Если вы получили массив объектов, вы можете объединить все объекты, расширив их до Object.assign.

var data = { props: [{ dog: { default: '', type: String }, cat: { default: '', type: String }, bird: { default: '', type: String } }, { dog: { default: '', type: String }, bird: { default: '', type: String }, fish: { default: '', type: String } }] },
    result = Object.assign({}, ...data.props);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
...