我想按日期对数组进行排序。但是忽略数组中的第一项。任何帮助将不胜感激。
我目前有这个:
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中的日期对所有内容进行排序
我所拥有的一切都可以排序。
谢谢
答案 0 :(得分:1)
如果id:1
与1
相匹配,您可以通过返回id
来从Array.sort中排除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
任何东西。
答案 1 :(得分:0)
要忽略数组中的第一项,请在sort
d数组中使用slice
,然后与第一项合并。另外请注意,时间戳记必须为字符串-当前无效。
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; }
答案 2 :(得分:0)
然后,您可以移动第一行,并在排序后读取。
strace -o curl.out curl www.google.com
strace -o dig.out dig www.google.com
grep libresolv *.out
grep libbind *.out
答案 3 :(得分:0)
使用shift()
删除第一个元素,然后使用unshift()
将其放回第一位置:
var first = articles.shift();
articles.sort(function(a,b){
return new Date(b.published) - new Date(a.published);
});
articles.unshift(first);