Saya memiliki objek di mana beberapa kunci adalah hash tingkat tunggal bersarang. Dalam contoh ini hanya b yang disarangkan.

const j = {
  a: 'A',
  b: {
    bb: 'BB',
    bbb: 'BBB',
    },
  c: 'C'
};

Pertanyaan

Apa yang saya cari adalah cara untuk mengulang objek dan jika kunci adalah objek bersarang, maka cetak kuncinya sebagai gantinya.

a
bb
bbb
c

Adakah seseorang yang tau bagaimana cara melakukannya?

2
Sandra Schlichting 5 Januari 2021, 02:29

2 jawaban

Anda dapat melakukannya dengan Object.entries dan flatMap:

const j = { a: 'A', b: { bb: 'BB', bbb: 'BBB' }, c: 'C' };

function getOneLevelKeys(obj) {
  return Object.entries(obj)
    .flatMap(([key, value]) => typeof value === "object" ? Object.keys(value) : key);
}

console.log( getOneLevelKeys(j) );
3
blex 4 Januari 2021, 23:34

Anda dapat menggunakan flatMap rekursif dengan Object.keys.

const j = {
  a: 'A',
  b: {
    bb: 'BB',
    bbb: 'BBB',
    },
  c: 'C'
};
const getKeys = o => Object.keys(o).flatMap(x => o[x] === Object(o[x]) 
      ? getKeys(o[x]) : x);
console.log(getKeys(j));
3
Unmitigated 4 Januari 2021, 23:44