根据可能为 null 的 属性 对数组进行排序
Sort an array according to a property which may be null
我有一个对象数组:
let items = [
{ name: 'eric', value: 1 },
{ name: 'bob', value: 4 },
{ name: 'michael', value: 0 },
{ name: 'john', value: 3 },
{ name: 'brad', value: null },
{ name: 'martin', value: 2 },
{ name: 'chris', value: null }
];
我想对我的数组进行排序,以便可以按 "value" 属性对对象进行排序,如果它为空,则将对象置于数组的底部:
{ name: 'michael', value: 0 },
{ name: 'eric', value: 1 },
{ name: 'martin', value: 2 },
{ name: 'john', value: 3 },
{ name: 'bob', value: 4 },
{ name: 'brad', value: null },
{ name: 'chris', value: null }
->
我已经试过了;
items.sort((a, b) => {
return (a.orde ===null)-(b.ordre===null) || +(a.ordre>b.ordre)||-(a.ordre<b);
});
不过好像不行
建议 ?
您可以评估 lodash 的使用情况并执行以下操作:
const items = [
{ name: 'eric', value: 1 },
{ name: 'bob', value: 4 },
{ name: 'michael', value: 0 },
{ name: 'john', value: 3 },
{ name: 'brad', value: null },
{ name: 'martin', value: 2 },
{ name: 'chris', value: null }
];
const orderedItems = lodash.orderBy(items, 'value');
希望对您有所帮助。
您可以先检查 null
,然后按值排序。
let items = [{ name: 'eric', value: 1 }, { name: 'bob', value: 4 }, { name: 'michael', value: 0 }, { name: 'john', value: 3 }, { name: 'brad', value: null }, { name: 'martin', value: 2 }, { name: 'chris', value: null }];
items.sort(({ value: a }, { value: b }) => (a === null) - (b === null) || a - b);
console.log(items);
.as-console-wrapper { max-height: 100% !important; top: 0; }
我有一个对象数组:
let items = [
{ name: 'eric', value: 1 },
{ name: 'bob', value: 4 },
{ name: 'michael', value: 0 },
{ name: 'john', value: 3 },
{ name: 'brad', value: null },
{ name: 'martin', value: 2 },
{ name: 'chris', value: null }
];
我想对我的数组进行排序,以便可以按 "value" 属性对对象进行排序,如果它为空,则将对象置于数组的底部:
{ name: 'michael', value: 0 },
{ name: 'eric', value: 1 },
{ name: 'martin', value: 2 },
{ name: 'john', value: 3 },
{ name: 'bob', value: 4 },
{ name: 'brad', value: null },
{ name: 'chris', value: null }
->
我已经试过了;
items.sort((a, b) => {
return (a.orde ===null)-(b.ordre===null) || +(a.ordre>b.ordre)||-(a.ordre<b);
});
不过好像不行
建议 ?
您可以评估 lodash 的使用情况并执行以下操作:
const items = [
{ name: 'eric', value: 1 },
{ name: 'bob', value: 4 },
{ name: 'michael', value: 0 },
{ name: 'john', value: 3 },
{ name: 'brad', value: null },
{ name: 'martin', value: 2 },
{ name: 'chris', value: null }
];
const orderedItems = lodash.orderBy(items, 'value');
希望对您有所帮助。
您可以先检查 null
,然后按值排序。
let items = [{ name: 'eric', value: 1 }, { name: 'bob', value: 4 }, { name: 'michael', value: 0 }, { name: 'john', value: 3 }, { name: 'brad', value: null }, { name: 'martin', value: 2 }, { name: 'chris', value: null }];
items.sort(({ value: a }, { value: b }) => (a === null) - (b === null) || a - b);
console.log(items);
.as-console-wrapper { max-height: 100% !important; top: 0; }