2017-07-05 3 views
-1

Grundsätzlich versuche ich, die erste Antwort auf dieser Seite (Sorting object properties based on value) zu kopieren, und mein Objekt in ein Array zu sortieren. Aber ich bekomme diese Fehlermeldung:Versucht, ein sortiertes Array von Objektwerten zu erhalten

TypeError: Cannot convert undefined or null to object

Was ist los?

const denom = { 
 
    'ONE HUNDRED': 100.00, 
 
    'TWENTY' : 20.00, 
 
    'TEN' : 10.00, 
 
    'FIVE': 5.00, 
 
    'ONE' : 1.00, 
 
    'QUARTER': 0.25, 
 
    'DIME': 0.10, 
 
    'NICKEL': 0.05, 
 
    'PENNY': 0.01 
 
    }; 
 
    
 
    const denomSorted = Object.keys(denom[0]).sort((a, b) => denom[0][b] - denom[0][a]); 
 
    
 
denomSorted.forEach(x => console.log(x + ': ' + denom[0][x]));

 

+2

denom [0] => denom –

Antwort

1

Sie diese Klammern [] fehlen.

const denom = [{ 
 
    'ONE HUNDRED': 100.00, 
 
    'TWENTY' : 20.00, 
 
    'TEN' : 10.00, 
 
    'FIVE': 5.00, 
 
    'ONE' : 1.00, 
 
    'QUARTER': 0.25, 
 
    'DIME': 0.10, 
 
    'NICKEL': 0.05, 
 
    'PENNY': 0.01 
 
    }]; 
 
    
 
    const denomSorted = Object.keys(denom[0]).sort((a, b) => denom[0][b] - denom[0][a]); 
 
    
 
denomSorted.forEach(x => console.log(x + ': ' + denom[0][x]));

 

+0

Dumm ich! Ich habe diese blöden Klammern im Originalcode nicht bemerkt! Vielen Dank! – Emilio

+0

willkommen .. Wenn die Antwort hilfreich ist, dann können Sie meine Antwort akzeptieren. –

1

Ursache denom [0]

undefined
Object.keys(denom[0]) 

fehl. Kann tun Object.keys (denom) und sortiert nach Schlüssel:

const denom = { 
 
    'ONE HUNDRED': 100.00, 
 
    'TWENTY' : 20.00, 
 
    'TEN' : 10.00, 
 
    'FIVE': 5.00, 
 
    'ONE' : 1.00, 
 
    'QUARTER': 0.25, 
 
    'DIME': 0.10, 
 
    'NICKEL': 0.05, 
 
    'PENNY': 0.01 
 
    }; 
 
    
 
    const denomSorted = Object.keys(denom).sort((a, b) => a.localeCompare(b)); 
 
    
 
denomSorted.forEach(x => console.log(x + ': ' + denom[x]));

oder nach Werten:

const denom = {  
 
    'ONE HUNDRED': 100.00, 
 
     'TWENTY' : 20.00, 
 
     'TEN' : 10.00, 
 
     'FIVE': 5.00, 
 
     'ONE' : 1.00, 
 
     'QUARTER': 0.25, 
 
     'DIME': 0.10, 
 
     'NICKEL': 0.05, 
 
     'PENNY': 0.01 
 
     }; 
 
     
 
     const denomSorted = Object.keys(denom).sort((a, b) => denom[a]- denom[b]); 
 
     
 
    denomSorted.forEach(x => console.log(x + ': ' + denom[x]));

+0

Dumm ich! Ich habe diese blöden Klammern im Originalcode nicht bemerkt! Vielen Dank! – Emilio

Verwandte Themen