Den Object.entries() metode i JavaScript kan bruges til at konvertere et objekt til et array - men det virker ikke rekursivt. Så her er en funktion til at opnå det.
Jeg kan ikke komme i tanke om en grund til hvorfor du ville gerne gøre dette, men det dukkede op, mens du sammensatte en artikel om brug af Object.entries() – så her er det!
Rekursiv funktion til konvertering af objekter til arrays
Jeg lader kommentarerne tale om, hvad der foregår. Essensen af det er, at du (uanset grund) vil konvertere et objekt og alle objekter i det til array/nøgleparværdier som output af Object.entries() . Selve arrays efterlades som de er.
//Demonstration object - a mess of nested objects and arrays var myObject = { colour: 'blue', number: 43, name: 'Fred', enabled: true, subArray: [0, 1, { height: 60 }], subObject: { foo: 'bar', anotherSubObject: { deep: 'dive', mood: { happy: false } } } }; //Function to convert objects containing nested objects and arrays to array pairs similar to Object.entries() function propertiesToArray(val) { //By default (val is not object or array, return the original value) var result = val; // If object passed the result is the return value of Object.entries() if (typeof val === 'object' && !Array.isArray(val)) { result = Object.entries(val); // If one of the results is an array or object, run this function on them again recursively result.forEach((attr) => { attr[1] = propertiesToArray(attr[1]); }); } //If array passed, run this function on each value in it recursively else if (Array.isArray(val)) { val.forEach((v, i, a) => { a[i] = propertiesToArray(v) }); } // Return the result return result; } // Test the function console.log(propertiesToArray(myObject));