我可以定义一个数字数组并像这样对它们进行排序
var array = ['2', undefined, '1'];
array.sort((a, b) => a - b);
console.log(array);
输出是1, 2, null。
我有一个可以包含数字属性的对象数组,我可以这样定义。并非所有对象都具有 number 属性。现在我想通过 number 属性对这个对象数组进行排序。所以我试过这个:
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/
小唯快跑啊
慕姐8265434
ABOUTYOU
相关分类