我有一个json对象,如下所示:
[
{
x:Tue Jan 17 2017 00:00:00 GMT+0000 (Hora padrão de GMT)
y:80
}
{
x:Tue Jan 17 2017 12:00:00 GMT+0000 (Hora padrão de GMT)
y:78
}
{
x:Tue Jan 17 2017 15:00:00 GMT+0000 (Hora padrão de GMT)
y:63
}
{
x:Tue Jan 18 2017 00:00:00 GMT+0000 (Hora padrão de GMT)
y:80
}
]在这种情况下,我只想要最后的2项,我不想在最后一天1月17日,我想最后一天与每一天,我怎么能用jquery做这种方法?
发布于 2016-12-17 20:25:18
我将创建一个临时对象,其中日期是对象键,然后将该对象映射到数组。
在每次设置对象属性的迭代过程中,如果该日期已经存在,它将被数组中的最后一个覆盖。
var tmp = {};
data.forEach(function(item){
var d = new Date(item.x);
var yr = d.getFullYear(),
mo = d.getMonth(),
day = d.getDate();
tmp[yr +'' + mo + '' + day] = item; // will overwrite prior same date
});
var results = Object.keys(tmp).map(funcion(key){
return tmp[key];
});这假设您想要的是由现有中的最后一个顺序决定的。
发布于 2016-12-17 20:49:06
可以使用动量解析和转换每个日期,并以相反的顺序遍历数组。结果数组中已经存在的数据将被跳过。
片段:
var data = [
{
x: 'Tue Jan 17 2017 00:00:00 GMT+0000 (Hora padrão de GMT)',
y: 80
},
{
x: 'Tue Jan 17 2017 12:00:00 GMT+0000 (Hora padrão de GMT)',
y: 78
},
{
x: 'Tue Jan 17 2017 15:00:00 GMT+0000 (Hora padrão de GMT)',
y: 63
},
{
x: 'Tue Jan 18 2017 00:00:00 GMT+0000 (Hora padrão de GMT)',
y: 80
}
];
var eleAlreadyInserted = {};
var resultData = [];
for (var i = data.length - 1; i >= 0; i--) {
var ddyy = moment(data[i].x, 'ddd MMM DD YYY').format('DDYYYY');
if (eleAlreadyInserted[ddyy] === undefined) {
eleAlreadyInserted[ddyy] = true;
resultData.unshift(data[i]);
}
}
console.log(resultData);<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
https://stackoverflow.com/questions/41202576
复制相似问题