Home > Software engineering >  Can you skip a level in a nested object without knowing the key in Javascript?
Can you skip a level in a nested object without knowing the key in Javascript?

Time:07-01

Hi I have this object

  15: {
    name: "Jane",
    age: 43,
    children: {
      32: {
        name: "Janette",
        age: 24,
        children: {
          487: {
            name: "Alex",
            age: 3,
            children: [],
          },
          166: {
            name: "Marcus",
            age: 1,
            children: [],
          },
        },
      },
    },
  },
  104: {
    name: "Eric",
    age: 24,
    children: [],
  },
};

I want to remove or and skip through directly to the children. But it is a random produced key value "between". How can I make a new array or just modify it since I don't know what the key will be?

I want it to be like this:

var object = [
  {
    name: "Jane",
    age: 43,
    children: [
      {
        name: "Janette",
        age: 24,
        children: [
          {
            name: "Alex",
            age: 3,
            children: [],
          },
          {
            name: "Marcus",
            age: 1,
            children: [],
          },
        ],
      },
    ],
  },
  {
    name: "Eric",
    age: 43,
    children: [],
  },
];

So as you see in the code, the ID with numbers are gone in that object that I want to make. Can you jump directly to the children if they exist?

CodePudding user response:

you can do something like this

const stripKeys = data => Object.values(data)
  .map(d => ({ 
    ...d,
    children: stripKeys(d.children)
  }))


const data = {
  15: {
    name: "Jane",
    age: 43,
    children: {
      32: {
        name: "Janette",
        age: 24,
        children: {
          487: {
            name: "Alex",
            age: 3,
            children: [],
          },
          166: {
            name: "Marcus",
            age: 1,
            children: [],
          },
        },
      },
    },
  },
  104: {
    name: "Eric",
    age: 24,
    children: [],
  },
};

console.log(stripKeys(data))

  • Related