繁体   English   中英

如何按日期对数组排序但错过第一个数组项

[英]How to sort array by date but missing out the first array item

我想按日期对数组进行排序。 但是忽略数组中的第一项。 任何帮助将非常感激。

我目前有这个:

articles.sort(function(a,b){
    return new Date(b.published) - new Date(a.published);
});

我的数组看起来像这样:

[
    {id: 1, published: Mar 12 2012 08:00:00 AM}, 
    {id: 2, published: Mar 9 2012 08:00:00 AM},
    {id: 3, published: Mar 15 2012 08:00:00 AM},
    {id: 4, published: Mar 22 2012 08:00:00 AM},
    {id: 5, published: Mar 8 2012 08:00:00 AM}
];

我只需要按照ID 2-5中的日期对所有内容进行排序

我所拥有的一切都是如此。

谢谢

你可以简单地排除id:1从您的Array.sort通过返回1 ,如果id匹配1

 let dates = [ {id: 1, published: 'Mar 12 2012 08:00:00 AM'}, {id: 2, published: 'Mar 9 2012 08:00:00 AM'}, {id: 3, published: 'Mar 15 2012 08:00:00 AM'}, {id: 4, published: 'Mar 22 2012 08:00:00 AM'}, {id: 5, published: 'Mar 8 2012 08:00:00 AM'} ]; let result = dates.sort((a,b) => a.id == 1 || b.id == 1 ? 1 : new Date(a.published) - new Date(b.published)) console.log(result) 

这样,您就不需要concatsliceshift任何内容。

要忽略数组中的第一项,请sort slice d数组进行sort ,然后与第一项合并。 另请注意,时间戳记必须为字符串-当前无效。

 const articles = [{id:1,published:"Mar 12 2012 08:00:0 AM"},{id:2,published:"Mar 9 2012 08:00:0 AM"},{id:3,published:"Mar 15 2012 08:00:0 AM"},{id:4,published:"Mar 22 2012 08:00:0 AM"},{id:5,published:"Mar 8 2012 08:00:0 AM"}]; const res = [].concat(articles[0], articles.slice(1).sort(({ published: a }, { published: b }) => new Date(a) - new Date(b))); console.log(res); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

然后,您可以移动第一行,并在排序后读取。

 var articles = [ {id: 1, published: "2018-01-09"}, {id: 2, published: "2019-01-01"}, {id: 3, published: "2019-01-04"}, {id: 4, published: "2019-01-03"}, {id: 5, published: "2019-01-02"} ]; var first = articles.shift(); articles.sort((a, b) => { return new Date(b.published) - new Date(a.published); }); articles.unshift(first); console.log(articles); 

使用shift()删除第一个元素,并使用unshift()将其放回第一个位置:

var first = articles.shift();
articles.sort(function(a,b){
    return new Date(b.published) - new Date(a.published);
});
articles.unshift(first);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM