[英]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)
这样,您就不需要concat
, slice
或shift
任何内容。
要忽略数组中的第一项,请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.