我有一个对象数组,其中有几个键值对,我需要根据‘updated_at’对它们进行排序:
[
{
"updated_at" : "2012-01-01T06:25:24Z",
"foo" : "bar"
},
{
"updated_at" : "2012-01-09T11:25:13Z",
"foo" : "bar"
},
{
"updated_at" : "2012-01-05T04:13:24Z",
"foo" : "bar"
}
]
最有效的方法是什么?
发布于 2012-01-12 23:23:30
您可以使用Array.sort
。
下面是一个例子:
var arr = [{
"updated_at": "2012-01-01T06:25:24Z",
"foo": "bar"
},
{
"updated_at": "2012-01-09T11:25:13Z",
"foo": "bar"
},
{
"updated_at": "2012-01-05T04:13:24Z",
"foo": "bar"
}
]
arr.sort(function(a, b) {
var keyA = new Date(a.updated_at),
keyB = new Date(b.updated_at);
// Compare the 2 dates
if (keyA < keyB) return -1;
if (keyA > keyB) return 1;
return 0;
});
console.log(arr);
发布于 2012-01-12 23:23:04
我已经在这里回答了一个非常类似的问题:Simple function to sort an array of objects
对于这个问题,我创建了这个小函数,它可能会执行您想要的操作:
function sortByKey(array, key) {
return array.sort(function(a, b) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
发布于 2013-01-23 00:36:08
这是一个略微修改的@David Brainer-Bankers answer版本,它按字符串的字母顺序或数字的数字顺序进行排序,并确保以大写字母开头的单词不会排在以小写字母开头的单词之上(例如,"apple,Early“将按该顺序显示)。
function sortByKey(array, key) {
return array.sort(function(a, b) {
var x = a[key];
var y = b[key];
if (typeof x == "string")
{
x = (""+x).toLowerCase();
}
if (typeof y == "string")
{
y = (""+y).toLowerCase();
}
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
https://stackoverflow.com/questions/8837454
复制相似问题