JS对象排序日期排序
JS object sorting date sorting
我有如下定义的JS对象-
var item = {};
item[guid()] =
{
symbol: $('#qteSymb').text(),
note: $('#newnote').val(),
date: $.datepicker.formatDate('mm/dd/yy', dt) + " " + dt.getHours() + ":" + minutes,
pagename: getPageName()
};
在我的应用程序中的某个时刻,我从chrome.storage获得了这些(Items
)的列表,我希望能够根据date
对其进行排序
以下是我正在做的
var sortable = [];
$.each(Items, function (key, value) {
if (value.symbol == $('#qteSymb').text() || all) {
sortable.push([key, value]);
}
});
console.log(sortable);
sortable.sort(function (a, b) {
a = new Date(a[1].date);
b = new Date(b[1].date);
return a > b ? -1 : a < b ? 1 : 0;
});
console.log(sortable);
它似乎不起作用。第一和第二CCD_ 3是相同的。我已经尝试将return a > b ? -1 : a < b ? 1 : 0;
更改为return a < b ? -1 : a > b ? 1 : 0;
,只是想看看是否对sortable
进行了任何更改,但什么都没发生。。。谢谢~
两个console.log
都显示相同的数组,因为当您使用console.log(sortable)
时,sortable
是通过引用传递的,并且控制台输出发生在完成脚本之后-当sortable
已经排序时。
简化代码:
var arr = [3,2,1];
console.log(arr); // Produces `[1,2,3]` because its printed
// to the console after `arr.sort();`
arr.sort();
console.log(arr); // Produces `[1,2,3]`, as expected
演示:http://jsfiddle.net/Rfwph/
解决方案
如果您想在修改前对数组执行console.log
以查看它,可以使用.slice(0)
来复制数组,即获得另一个数组,该数组包含与您的数组相同的元素。
var arr = [3,2,1];
console.log(arr.slice(0)); // [3,2,1]
arr.sort();
console.log(arr); // [1,2,3]
演示:http://jsfiddle.net/Rfwph/2/
编辑:最好使用.slice(0)
,而不是.slice()
,这在FF上是受支持的,但ecma262规范说只有end
参数是可选的。
@Oriol:
我刚拉了一把一模一样的小提琴http://jsfiddle.net/JaU4g/,但对我来说,它确实奏效了!
var ar=[3,1,8,4,7,2,4,1]
console.log(ar.join(','));
ar.sort();
console.log(ar.join(','));
给予:
[18:55:31.616] "3,1,8,4,7,2,4,1"
[18:55:31.616] "1,1,2,3,4,4,7,8"
相关文章:
- 如何合并不同集合的游标并按日期排序
- 如何在智能表中按日期对项目进行排序
- 在d3.js中对x轴上的日期进行排序
- 按ISO 8601日期对数组进行排序
- 如何按日期对Arraylist进行排序,然后将其传递给JSP
- 不带插件的JavaScript排序日期
- 以角度 js 格式排序日期
- 在MongoDB中保存和排序日期
- JS对象排序日期排序
- 排序日期不返回已排序的日期
- 数组排序日期未按预期工作
- 在jquery中验证和排序日期
- 有没有更好的智能排序日期的方法?
- 在Javascript中排序日期
- jQuery数据表-按隐藏列排序日期
- 如何排序日期和字符串在同一列在jquery插件有文件jquery. datatable .js
- 在JavaScript中排序日期字符串数组的最佳方式
- 谷歌自定义搜索排序日期范围标准不工作
- 排序日期对象数组错误javascript
- 猫鼬聚集而不是排序日期