可以使用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的对象也排在了前面

js 把对象数组满足属性fixed等于true或者等于left提到前面

原文地址: https://www.cveoy.top/t/topic/iNdq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录