Javascript 从字符串中排序元素
我有一根绳子Javascript 从字符串中排序元素,javascript,string,sorting,Javascript,String,Sorting,我有一根绳子 7条蛇 4辆自行车 2个芒果 它由数字+空格+字符串组成。我需要能够根据数字对整个字符串进行排序。所以应该说: 2个芒果 4辆自行车 7条蛇 这是一个简单的编号冒泡排序,然后交叉引用索引以获得最终顺序。下面的JavaScript代码可以工作,但我忍不住认为可以提高效率。我错过了一个技巧吗 记住:我是个艺术家,所以我用蜡笔编码 var eventsStr = "7 serpents\n4 bikes\n2 mangoes" var splitArr = eventsStr.s
- 7条蛇
- 4辆自行车
- 2个芒果
- 2个芒果
- 4辆自行车
- 7条蛇
var eventsStr = "7 serpents\n4 bikes\n2 mangoes"
var splitArr = eventsStr.split("\n")
var numArray = new Array();
var events = new Array();
for (var i = 0; i < splitArr.length; i++)
{
var temp = splitArr[i] ;
var part1 = temp.substring(0, temp.indexOf(" "))
var part2 = temp.substring(temp.indexOf(" ")+1, temp.length)
numArray[i] = part1;
events[i] = part2;
}
var sorted = superCopy(numArray);
var sorted = sorted.sort(sortArrayNumerically);
alert(getOrder(sorted, numArray, events))
function getOrder(orderedarr, arr1, arr2)
{
var str = "";
for (var i = 0; i < arr1.length; i++)
{
for (var j = 0; j < orderedarr.length; j++)
{
if (arr1[i] == orderedarr[j])
{
// found the thing !what is the event?
str += arr1[i] + " " + arr2[i] + "\n";
}
}
}
return str
}
function sortArrayNumerically(a,b)
{
return a - b;
}
function superCopy(arr)
{
tempArr = new Array();
for (var i = 0; i < arr.length; i++)
{
tempArr[i] = arr[i]
}
return tempArr
}
var eventsStr=“7蛇\n4自行车\n2芒果”
var splitArr=eventsStr.split(“\n”)
var numArray=新数组();
var events=新数组();
对于(变量i=0;i
您可以使用JavaScript的功能:
eventsStr.split('\n').sort().join('\n');
-首先拆分换行符上的字符串以创建数组eventsStr.split('\n')
-然后使用.sort()
函数对数组进行排序sort()
-然后将字符串放回一起,用换行符连接数组元素.join('\n')
但这是字母排序,因此如果字符串包含12个芒果,则结果不会按数字排序。要进行数字排序,可以执行以下操作:
eventsStr.split('\n').sort(function(a, b) {
return parseInt(a.split(' ')[0], 10) > parseInt(b.split(' ')[0], 10);
}).join('\n');
在这种情况下,使用回调参数调用sort()
函数,取两个值:要比较的第一个字符串和要比较的第二个字符串。然后,此回调函数拆分字符串,提取数字并将其与另一个字符串中的数字进行比较。使用
splitArr.sort() // as per your code
演示
var eventsStr = "7 serpents\n4 bikes\n2 mangoes"
arr = eventsStr.split('\n')
# ["7 serpents", "4 bikes", "2 mangoes"]
arr
# ["7 serpents", "4 bikes", "2 mangoes"]
arr.sort()
# ["2 mangoes", "4 bikes", "7 serpents"]
这更适合于