javascript - 根据可能为空的属性对数组进行排序
问题描述
我有一个对象数组:
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 }
];
我想对我的数组进行排序,以便可以按“值”属性对对象进行排序,如果它为空,则将对象放在数组的底部:
{ 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);
});
但似乎它不起作用
建议?
解决方案
您可以先检查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; }
推荐阅读
- angular - 解决不是一个功能
- python - python - 为 Keras LSTM 读取多个 CSV
- python - 比 cv2.FindContours+convexHull 更快的算法来检测橙色方形平台?
- format - MDX - 范围内的 StrToMember
- wordpress - Wordpress Algolia 插件,仅将所有帖子索引到 searchable_posts 索引中,而不是启用的?
- node.js - 如何在 AWS Lambda 中保留信息直到下一次执行
- python - 迭代深度嵌套的熊猫 json 对象?
- c# - Wpf从样式中绑定TextBlock的文本属性
- firebase - Firebase 用户对象在 Localhost 上为空
- cesium - 当我在浏览器中加载 cesium.js 时出现 Cesium-terrain-builder-docker 错误