按结束数字排序以数字结尾的字符串

Sam*_*nes 3 javascript arrays sorting

我有一系列的值,如:

item1, item3, item2, item4, item5, item8, item6, item9, item10, item7, item11
Run Code Online (Sandbox Code Playgroud)

当我使用.sort()j 在javascript中对它们进行排序时得到以下结果:

item1, item10, item11, item2, item3, item4, item5, item6, item7, item8, item9
Run Code Online (Sandbox Code Playgroud)

我知道这是因为这些项目是字符串,这sort()是设计目的,但我怎样才能将它们分类为以下内容?

item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11
Run Code Online (Sandbox Code Playgroud)

谢谢,

Exp*_*lls 6

您可以定义自己的.sort回调.实际上你需要这样做才能对数字进行排序.不过,你的情况有点不同.

.sort(function (a, b) {
    return (+a.replace("item", "")) - (+b.replace("item", ""));
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/Hbs8g/

如果item不一致,您可以通过.split(/(\d+)/)[1]假设单词部分不包含任何数字来获取数字部分:http://jsfiddle.net/Hbs8g/1/