javascript - JS 中对象数组按两个值排序

标签 javascript jquery arrays

我有以下对象数组

var parameter = "B001";
var my_array = [
                 {
                  "Shippment_out" : "2020-05-10",
                  "Batch" : "B001",
                  "Truck_No" : "ZB001"
                 },
                 {
                  "Shippment_out" : "2020-05-10",
                  "Batch" : "B002",
                  "Truck_No" : "ZB001"
                 },
                 {
                  "Shippment_out" : "2020-05-11",
                  "Batch" : "B001",
                  "Truck_No" : "ZB002"
                 },
                 {
                  "Shippment_out" : "2020-05-11",
                  "Batch" : "B002",
                  "Truck_No" : "ZB002"
                 },
               ]

我计划按参数排序,如果我将批处理号传递为 B001,则数组应先按 B001 排序,然后按 B002 排序,再加上较早的日期。在本例中为“2020-05-10”。

同样,如果我通过“B002”,然后“B002”,然后“B001”。再次提前约会。

我尝试了 my_array.sort(function (a, b) {}) 但无法实现逻辑。

最佳答案

sort 方法中,检查 a.Batch 和 b.Batch 值。
如果两个值与所需批处理相同,则根据装运进行排序。
如果其中一个值与批处理相同,则相应返回。

var my_array = [
  {
    Shippment_out: "2020-05-10",
    Batch: "B001",
    Truck_No: "ZB001"
  },
  {
    Shippment_out: "2020-05-10",
    Batch: "B002",
    Truck_No: "ZB001"
  },
  {
    Shippment_out: "2020-05-11",
    Batch: "B001",
    Truck_No: "ZB002"
  },
  {
    Shippment_out: "2020-05-11",
    Batch: "B002",
    Truck_No: "ZB002"
  }
];

const sortArray = (arr, batch) => {
  return arr.sort((a, b) => {
    if (a.Batch === batch && b.Batch === batch) {
      return new Date(a.Shippment_out) - new Date(b.Shippment_out);
    } else if (a.Batch === batch) {
      return -1;
    } else if (b.Batch === batch) {
      return 1;
    } else {
      return 0;
    }
  });
};

console.log('B001', sortArray(my_array, "B001"));
console.log('B002', sortArray(my_array, "B002"));

关于javascript - JS 中对象数组按两个值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61515744/

相关文章:

javascript - 删除没有 ID 的嵌套 <SPAN>

javascript - 如何在单击图片按钮时上传新文件

javascript - 如果键是数字,它会自动与从 JSON 创建的表中的左侧对齐

cryptography - 在密码学中使用字节数组和十六进制值

javascript - 使用 javascript/css 流畅地导航栏

javascript - 如何通过点击div和js外部来关闭可扩展菜单

javascript - 无法创建唯一的 javascript 对象。这段代码有什么问题?

javascript - 单击时更新所有表下拉列表项

c - 在大小为 nxn 的矩阵的单元格中找到最大用户数

javascript - Javascript中如何将数组的数组转换为对象数组?