按字母顺序排序始终将所有文本作为第一个选项

时间:2017-09-22 03:35:52

标签: javascript angularjs arrays string sorting

我一直在尝试按字符串对下面的数组进行排序,它运行正常。但问题是,文本“ALL”应始终显示在列表的顶部。由于按字母顺序排序,文本“ALL”将移动到其自然字母位置。要求在排序后,它应该在列表的第一个元素中。如何做到这一点最好的方式?

b

2 个答案:

答案 0 :(得分:3)

这很简单,你只需要在 .sort() 回调中添加一个额外的条件,为All字符串赋予优先级,这样就可以对它进行处理第一。

arr.sort(function(a, b) {
  var nameA = a.toUpperCase();
  var nameB = b.toUpperCase();
  if (nameA === "ALL") {
    return -1;
  } else if (nameB === "ALL") {
    return 1;
  }
//The rest of the code

<强>演示:

这是一个演示:

&#13;
&#13;
var arr = ['All', 'Alabama', 'Alaska', 'American Samoa', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District of Columbia', 'Federated States of Micronesia', 'Florida', 'Georgia', 'Guam', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Marshall Islands', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Northern Mariana Islands', 'Ohio', 'Oklahoma', 'Oregon', 'Palau', 'Pennsylvania', 'Puerto Rico', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virgin Island', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];


var results = arr.sort(function(a, b) {
  var nameA = a.toUpperCase();
  var nameB = b.toUpperCase();
  if (nameA === "ALL") {
    return -1;
  } else if (nameB === "ALL") {
    return 1;
  } else {
    if (nameA < nameB) {
      return -1;
    }
    if (nameA > nameB) {
      return 1;
    }
  }

  // names must be equal
  return 0;
});
console.log(results);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以尝试像这样更新代码

Import