【问题标题】:Trying to get a sorted array from object values试图从对象值中获取排序数组
【发布时间】:2023-03-18 16:14:01
【问题描述】:

基本上,我试图复制此页面上的第一个答案 (Sorting object properties based on value),并将我的对象排序到一个数组中。但我收到此错误消息:

TypeError: 无法将 undefined 或 null 转换为对象

怎么了?

  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]));
  
  

【问题讨论】:

  • denom[0] => denom

标签: javascript


【解决方案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]));
  
  

【讨论】:

  • 傻我!我没有注意到原始代码中的这些愚蠢的括号!谢谢!
  • 欢迎 .. 如果回答有帮助,那么您可以接受我的回答。
【解决方案2】:

因为 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]));

【讨论】:

  • 傻我!我没有注意到原始代码中的这些愚蠢的括号!谢谢!
猜你喜欢
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 2016-12-24
  • 2017-10-06
  • 2016-09-06
相关资源
最近更新 更多