Альтернативный вариант Object.entries, преобразующий массив объектов в строки - PullRequest
0 голосов
/ 10 июля 2020

Я пытался напечатать "person[0].name: a" и "person[1].name: b" и так далее, основываясь на этом массиве объектов person:

Я использовал записи объектов дважды, любым другим способом я могу сделать l oop more эффективный?

const person = [{
  name: 'a',
}, {
  name: 'b'
}]

Object.entries(person).forEach(([key, value]) => {
  Object.entries(value).forEach(([key2, value2]) => {
    console.log(`person[${key}].${key2}`, ':', value2)
  })
})

Ответы [ 3 ]

1 голос
/ 10 июля 2020

Вы можете применить рекурсивный подход и передать родительский путь.

const
    show = (object, parent) => {
        const wrap = Array.isArray(object) ? v => `[${v}]` : v => `.${v}`;
        Object.entries(object).forEach(([k, v]) => {
            if (v && typeof v === 'object') show(v, parent + wrap(k));
            else console.log(parent + wrap(k), v);
        });
    },
    person = [{ name: 'a' }, { name: 'b' }];

show(person, 'person');
0 голосов
/ 10 июля 2020

Вы также можете попробовать что-то подобное, только с одним forEach () l oop

const person = [{
    name: 'a',
  },{
      name: 'b'
  }];
  
  
person.forEach((el,i) => {
        let prop = Object.keys(el).toString();
        
        console.log(`person[${i}].${prop}`, ':', el[prop])  
});
        
          
0 голосов
/ 10 июля 2020

Вам действительно не нужен первый звонок. person уже является массивом.

const person = [{
  name: 'a',
}, {
  name: 'b'
}]


person.forEach((value, key) => {
  Object.entries(value).forEach(([key2, value2]) => {
    console.log(`person[${key}].${key2}`, ':', value2)
  })
})

На всякий случай forEach для побочных эффектов. Если вы хотите создать другой массив с преобразованными значениями, вам лучше использовать map / flatMap.

const person = [{
  name: 'a',
}, {
  name: 'b'
}]


const transformed = person.flatMap((value, key) => {
  return Object.entries(value).map(([key2, value2]) => `person[${key}].${key2}:${value2}`)
})

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