2014-01-09 30 views
0

我有一個字符串!字符串中的訂單元素

  • 7蛇
  • 4自行車
  • 2芒果

它由數+ [空格] +事情串的。我需要能夠根據數字排序整個字符串。因此,它應該出來:

  • 2芒果
  • 4自行車
  • 7蛇

這是一個簡單的冒泡排序的號碼,然後交叉參考指標,以獲得最終的訂單。下面的JavaScript代碼有效,但我不禁認爲它可以變得更高效。我在這裏錯過了一個竅門嗎?

請記住:我是一位藝術家,所以我用蠟筆編碼!

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 
} 
+1

這是更適合http://codereview.stackexchange.com/ – Andy

回答

2

你可以使用JavaScript的sort()功能:

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()函數調用回調參數,服用2個值:第一個字符串進行比較和被比較的第二個字符串。此回調函數然後拆分字符串,提取數字並將其與另一個字符串中的數字進行比較。

0

使用

splitArr.sort() // as per your code 

DEMO

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"]