javascript之使用 sort() 移动数组开头的对象

myhome 阅读:15 2024-12-31 21:38:35 评论:0

我需要按日期值对对象数组进行排序:

array.sort(function(a,b){ 
return new Date(b.date) - new Date(a.date); 
}) 

但如果date未定义,则应放在开头。使用上面显示的代码,空数据集将放在末尾。

请您参考如下方法:

const array = [ 
  { date: 624000, name: 'Eddison', }, 
  { date: 224000, name: 'Bobby', }, 
  {               name: '--no date 2' }, 
  { date: 924000, name: 'Fred', }, 
  { date: 124000, name: 'Abe', }, 
  {               name: '--no date 1' }, 
  { date: 424000, name: 'David', }, 
  { date: 324000, name: 'Catheryn', }, 
]; 
 
// assuming there is no 0 date 
array.sort(function(a, b) { 
  return (a.date && b.date) 
      ? new Date(b.date) - new Date(a.date) 
      : (a.date || 1) - (b.date || 1);  
}); 
 
//result 
array.forEach(elem => console.log(JSON.stringify(elem)));

请注意,如果您关心日期 0 和未定义日期之间的区别,则

  return (a.date !== undefined && b.date !== undefined) 


标签:JavaScript
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号