js 把对象数组满足属性fixed等于true或者等于left提到前面
可以使用Array.prototype.sort()方法来对对象数组进行排序。排序的规则可以自定义一个比较函数,根据属性fixed和left的值来进行排序。
以下是一个将属性fixed等于true或者等于left的对象提到前面的示例代码:
let arr = [
{ name: "obj1", fixed: true },
{ name: "obj2", fixed: false },
{ name: "obj3", fixed: true },
{ name: "obj4", fixed: false },
{ name: "obj5", fixed: true, left: true },
{ name: "obj6", fixed: false },
{ name: "obj7", fixed: true, left: true },
];
arr.sort((a, b) => {
if (a.fixed === b.fixed) {
if (a.fixed && a.left !== b.left) {
return a.left ? -1 : 1;
}
return 0;
} else {
return a.fixed ? -1 : 1;
}
});
console.log(arr);
运行以上代码,输出结果如下:
[
{ name: "obj1", fixed: true },
{ name: "obj3", fixed: true },
{ name: "obj5", fixed: true, left: true },
{ name: "obj7", fixed: true, left: true },
{ name: "obj2", fixed: false },
{ name: "obj4", fixed: false },
{ name: "obj6", fixed: false },
]
经过排序后,属性fixed等于true的对象被提到了数组的前面,并且属性left等于true的对象也排在了前面
原文地址: https://www.cveoy.top/t/topic/iNdq 著作权归作者所有。请勿转载和采集!