我在这里有点力不从心,我希望这真的是可能的。
我希望能够调用一个函数来重新排列我的列表,以便以大写字母开头的项目排在第一位
我已经通过stackoverflow和googling搜索了一段时间,但什么也没有找到。有什么想法吗?
例如,var item=香蕉、苹果、芒果、凤梨、甜瓜
该函数应将Apple Mango和Melon放在开头,因为它们以大写字母开头
发布于 2017-04-14 00:25:05
var items = ["banana", "Apple", "Mango", "pineapple", "Melon"]
items.sort();
alert(items)您可以在此fiddle中看到它的实际效果
这样做的原因是在ascii table中,大写字母排在小写字母之前。因此,当您对列表进行排序时,它会根据字符串的ascii值进行排序。
发布于 2017-04-14 00:29:14
您可以只查看第一个字符,并检查它是否为小写字母,然后将其排序到末尾。它不会按整个字符串对列表进行排序。
这个提议对Array#sort使用了一个排序函数,该函数返回一个值进行排序。该值表示两个元素之间的关系。
var items = ['banana', 'Apple', 'Mango', 'pineapple', 'Melon', 'Apricot'];
items.sort(function (a, b) {
    return (a[0] === a[0].toLowerCase()) - (b[0] === b[0].toLowerCase());
});
console.log(items);
发布于 2017-04-14 00:31:04
这是您可以自定义的另一种方法。
startsWithCapitalLetter = function(string) {
    return (string.charAt(0).toUpperCase() === string.charAt(0));
}
var items = ['banana', 'Apple', 'Mango', 'pineapple', 'Melon'];
var upper = [];
var lower = [];
for(var i=0; i<items.length; i++) {
    if (items.hasOwnProperty(i)) {
    if (startsWithCapitalLetter(items[i])) {
        upper.push(items[i]);
    } else {
        lower.push(items[i]);
    }
  }
}
var sorted = upper.concat(lower);
console.log(sorted);https://stackoverflow.com/questions/43397240
复制相似问题