javascript - 按字母顺序对数组进行排序,但有异常(exception)

标签 javascript arrays

我有如下数组结构

[{
  name: "Mobile Uploads"
}, {
  name: "Profile Pictures"
}, {
  name: "Reports"
}, {
  name: "Instagram Photos"
}, {
  name: "Facebook"
}, {
  name: "My Account"
}, {
  name: "Twitter"
}]

我想对数组重新排序,使其按以下顺序排列:Profile PicturesMobile UploadsInstagram Photos 和对象之后按字母顺序排列。

最佳答案

您要做的是创建一个包含排序异常的对象。然后你可以写一个自定义sort()解释异常的函数。

var list = [{
  name: "Date"
}, {
  name: "Mobile Uploads"
}, {
  name: "Profile Pictures"
}, {
  name: "Fig"
}, {
  name: "Instagram Photos"
}, {
  name: "Cherry"
}, {
  name: "Apple"
}, {
  name: "Banana"
}];

var exceptions = {
  "Profile Pictures": 1,
  "Mobile Uploads": 2,
  "Instagram Photos": 3
}

list.sort(function(a, b) {
  if (exceptions[a.name] && exceptions[b.name]) {
    //if both items are exceptions
    return exceptions[a.name] - exceptions[b.name];
  } else if (exceptions[a.name]) {
    //only `a` is in exceptions, sort it to front
    return -1;
  } else if (exceptions[b.name]) {
    //only `b` is in exceptions, sort it to back
    return 1;
  } else {
    //no exceptions to account for, return alphabetic sort
    return a.name.localeCompare(b.name);
  }
});

console.log(list);

关于javascript - 按字母顺序对数组进行排序,但有异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448968/

相关文章:

javascript - 循环遍历具有可观察属性的 JS 对象

javascript - HighCharts getJson - 无法显示

javascript - jquery ajax传递2个数组,然后拆分它们并在laravel中单独使用它们

c++ - 如何在没有某种数组的情况下输入多个值

javascript - 使用没有表单的 jquery 按钮重置

javascript - 将卡片从一堆移动到另一堆将项目从一个数组移动到另一个 javascript

mysql - 在另一个选择查询中使用一个选择查询的输出

c - 如何在 C 中使用动态多维数组?

python - 使用 Numpy 进行多维索引

javascript - 递归返回检查 array[i+1] 和 array[i-1]