当前位置: 首页 > 知识库问答 >
问题:

如何对javascript数组进行排序,其中第一条记录应该是特定的,然后按降序排列

端木澄邈
2023-03-14

像列表对象一样输入数组,[{number:13.23,active:false},{number:2.21,active:false},{number:2.3,active:true}]

预期的降序排序输出为,“active”对象应该是第一个,而所有其他按数字降序排序的对象应该在“active”记录之后。尝试与下面的方法,但它没有给我作为第一次进入活跃。这种排序按数字递减,但活动不在先。

const arr = [{ number: 13.23 , Active: false },{ number: 2.21 , Active: false },{ number: 2.3 , Active: true }];

const customSortActiveShouldBeFirst = function(array) {
  let key = 'number';
  if (array && array.length > 0) {
    return array.sort(function(a, b) {
      var x = a[key];
      var y = b[key];
      return (x['Active'] === true ? 1 : (y - x));
    });
  }
  return array;
};
console.log(customSortActiveShouldBeFirst(arr))

预期输出:活动对象首先出现在结果数组中,然后所有条目按数字降下。例如,[{number:2.3,active:true},{number:13.23,active:false},{number:2.21,active:false}]

共有1个答案

伍宝
2023-03-14

首先按Active排序,然后在Active值相同时按数字DSC排序。

const arr = [
  { number: 13.23, Active: false },
  { number: 2.21, Active: false },
  { number: 2.3, Active: true },
];

arr.sort((a, b) => {
  if (a.Active === b.Active) {
    return b.number - a.number;
  } else if (a.Active || !b.Active) {
    return -1;
  } else if (b.Active || !a.Active) {
    return 1;
  }
  return 0;
});

console.log(arr);
 类似资料:
  • 如何对值进行排序,并将其直接按降序放入for循环本身的数组中,而不是在for循环之后使用sorted函数?

  • 我的教授介绍了如何使用ArrayList创建Max Heap类。然后他让我们写一个maxHeapSort方法。我几乎成功地将堆按降序排序,但我假设排序应该按升序。现在我使用一个最大堆为[11,5,8,3,4,1]的ArrayList,它排序为[11,8,5,3,4,1]。 这是我的maxHeapSort代码: 下面是我的教授给出的heapifyDown方法: 这是我的测试代码:

  • 问题内容: 以下代码将按 升序 对数组进行排序: 我需要 按降序 排序。如何使用比较器执行此操作? 请帮忙。 问题答案: 对于原始数组类型,您必须编写一个反向排序算法: 或者,您可以将转换为并编写比较器: 或使用,因为它仅适用于非原始数组类型。 最后,

  • 问题内容: 我有一个要排序的对象数组,每个对象都有两个参数:强度和名称 我想先按强度排序,然后再按字母顺序排序。我正在使用以下代码对第一个参数进行排序。然后如何排序? 谢谢你的帮助。 问题答案: 这样扩展您的排序功能; 一个和比较对字符串 是 字母比较。

  • 我想按第三个和第一个元素对元组数组进行排序,因此我使用了以下代码: 我的问题是,在前面的例子中,我可以按第三个元素和第一个元素的升序排序,也可以按它们的降序排序(使用反向)。但是如何按第三个元素的升序和第一个元素的降序排序。 请在你的回答中考虑以下情况: 在这种情况下,我不知道内部数组的确切大小(取决于我读入该数组的文件模式),我想按侧中的所有项进行排序(一些升序和一些降序)。 编辑:看起来,我明