基本上我试图复制此页面上的第一个答案(Sorting object properties based on value),并将我的对象排序为数组。但我收到此错误消息:
TypeError:无法将undefined或null转换为object
有什么问题?
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 :(得分:1)
你缺少那些[]括号。
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]));


答案 1 :(得分:1)
原因denom [0]未定义
Object.keys(denom[0])
会失败。可以做Object.keys(denom),然后按键排序:
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]));
或在值之后:
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]));