我有一个对象数组,我试图排序,但它似乎并没有工作。数组中的某些对象具有我要对其进行排序的orderNum
属性。但并不是所有的对象都有这个属性。数组排序不工作
我希望将具有orderNum
属性的对象排序到数组的顶部位置。
这里是一个小提琴是我曾尝试:http://jsfiddle.net/7D8sN/
这里是我的javascript:
var data = {
"attributes": [
{
"value": "123-456-7890",
"name": "phone"
},
{
"value": "[email protected]",
"name": "email"
},
{
"value": "Gotham",
"name": "city",
"orderNum": 1
},
{
"value": "12",
"name": "ID"
},
{
"value": "Batman",
"name": "Super Hero",
"orderNum": 2
}
]
};
data.attributes.sort(function (a, b) {
if (a.orderNum < b.orderNum) {
return -1;
}
if (a.orderNum > b.orderNum) {
return 1;
}
return 0;
});
console.log(data);
为我工作。 orderNum对于未定义的值应该有一个值。你得到的结果很奇怪,因为你正在比较未定义,而你的排序函数返回0时,你将值与没有值的值进行比较。 – jeremy
@jeremy这是他的问题的整个观点,他想知道如何避免为没有orderNum的元素得到奇怪的结果。 – Barmar