我可以定义一个数字数组并按照以下方式对它们进行排序。
输出结果为
我有一个对象数组,其中包含一个可以定义为数字属性的属性。并非所有对象都具有数字属性。现在我想按数字属性对这个对象数组进行排序。所以我尝试了这个方法:
输出结果并非我想要的。我得到了
如果数组中所有对象都定义了 number 属性,相同的排序函数会产生
我的问题是,如何以最佳方式对对象数组按属性进行排序,其中该属性并非总是定义的。预期结果是按属性(数字)对对象进行排序,并将未定义该属性的对象放在数组末尾。
到目前为止,我唯一的解决方案是遍历集合,如果未定义属性,则将属性设置为0或null。然后我可以将对象数组传递给sort函数,它会按照我想要的方式工作。有比这更好的方法吗?
Jfiddle链接:https://jsfiddle.net/t2r6z13e/1/
var array = ['2', undefined, '1'];
array.sort((a, b) => a - b);
console.log(array);
1、2、null
。我有一个对象数组,其中包含一个可以定义为数字属性的属性。并非所有对象都具有数字属性。现在我想按数字属性对这个对象数组进行排序。所以我尝试了这个方法:
var array = [
{ number: 2 },
{},
{ number: 1 }
];
array.sort((a, b) => a.number - b.number);
console.log(array);
2, undefined, 1
。如果数组中所有对象都定义了 number 属性,相同的排序函数会产生
1, 2
,这是我期望的结果。
var array = [
{ number: 2 },
{ number: 1 }
];
array.sort((a, b) => a.number - b.number);
console.log(array);
到目前为止,我唯一的解决方案是遍历集合,如果未定义属性,则将属性设置为0或null。然后我可以将对象数组传递给sort函数,它会按照我想要的方式工作。有比这更好的方法吗?
Jfiddle链接:https://jsfiddle.net/t2r6z13e/1/