2010-06-13 77 views
1

我的代碼:如何在JavaScript中對連接數組進行排序?

var company=new Array("Kestrel Moon:","BB:"); 
var basicPri=new Array(1165,1231); 

for(var i=0;i<15;i++){ 
var companyTotal=company[i].concat(basicPri[… 

document.write(""+companyTotal+"") 

它顯示在屏幕上:

Kestrel Moon: 1165

BB: 1231

我想,以使其升價的最高值的順序,以便以數組排序它應顯示爲:

BB: 1231 
Kestrel Moon: 1165 

正常的排序不會這樣做,因爲它會對價格進行排序,但公司名稱保留在原來的位置,我如何對兩個數組進行排序,以顯示我想要顯示的內容?

謝謝

+0

請使用代碼縮進。它使讀起來更容易。 – 2010-06-13 10:39:27

+0

使用數組文字[]而不是新數組 – evilpie 2010-06-13 10:47:32

回答

0

通常,您將組號名稱:

function sortNumber(a,b) 
{ 
    return b[1] - a[1]; // comparing using 2nd element 
} 

var n = [["ccc", 10.23], ["www", 23.12], ["mmm", 0.56]]; 
document.write(n.sort(sortNumber)); 

輸出:

www,23.12,ccc,10.23,mmm,0.56 

,如果你使用jQuery,您可以從結果中創建一個表:

function sortNumber(a,b) 
{ 
    return b[1] - a[1]; // comparing using 2nd element 
} 

var n = [["ccc", 10.23], ["www", 23.12], ["mmm", 0.56]]; 
sorted = n.sort(sortNumber); 

$('body').append('<table id="thetable"></table>'); 
$('#thetable').css({borderCollapse: 'collapse'}) 
for (i = 0; i < sorted.length; i++) { 
    $('#thetable').append('<tr><td>' + sorted[i][0] + '</td><td>' + sorted[i][1] + '</td></tr>') 
} 
$('td').css({ border: '1px solid #ccc', padding: '0.2em 1em' }); 
0

一個正常的排序不會做,因爲它會在價格,但該公司的名稱進行排序留他們在哪裏......

在這種情況下,對象的數組,很可能是一個更好的數據結構中的數據。考慮下面的例子:

var dict = [ 
    {company: 'Kestrel Moon:', basicPri: '1165'}, 
    {company: 'BB:', basicPri: '1231'} 
]; 

var sorted = dict.sort(function(a, b) { 
    return a.company.localeCompare(b.company); 
}); 

console.log(sorted[0].company + ' ' + sorted[0].basicPri); 
console.log(sorted[1].company + ' ' + sorted[1].basicPri); 

// Prints: 
// ------------------ 
// BB: 1231 
// Kestrel Moon: 1165 
0

下面是使用您的代碼作爲鹼的可能性(即,2個陣列):

// comparaison functor 
function sorter(a, b) { 
    return a.name.localeCompare(b.name); 
} 

// build a sorted array of object like 
// [ { "name": "foo", price: 123 }, ... ] 
// sorted by company name (Locale aware order) 
function mysort(comp, prices) { 
    var res = []; 

    for (var i = 0; i < comp.length; i++) { 
     res.push({"name": comp[i], "price": prices[i]}); 
    } 

    return res.sort(sorter); 
} 

var company = ["Kestrel Moon:", "BB:"]; 
var basicPri = [1165, 1231]; 
var companyTotal = ""; 
var arr = mysort(company, basicPri); 

for (var i in arr) { 
    companyTotal += arr[i].name + " " + arr[i].price + "<br/>"; 
} 

document.write(companyTotal); 

測試在鉻6.0.427.0 dev的

相關問題