如何在JavaScript中对串联数组进行排序?

如何在JavaScript中对串联数组进行排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我的代码: 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+"") 普通的排序不会这样做,因为它会对价格进行排序,但公司名称保持不变。我如何对两个数组进行排序,以便它显示我想

我的代码:

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+"")
普通的排序不会这样做,因为它会对价格进行排序,但公司名称保持不变。我如何对两个数组进行排序,以便它显示我想要显示的内容


谢谢

通常,您会将名称与编号分组:

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' });
函数排序编号(a,b)
{
返回b[1]-a[1];//使用第二个元素进行比较
}
变量n=[“ccc”,10.23],“www”,23.12],“mmm”,0.56];
排序=n.sort(sortNumber);
$('body')。追加('');
$('#thetable').css({borderCollapse:'collapse'})
对于(i=0;i
一个普通的排序不会这样做,因为它会排序的价格,但公司名称留在那里他们

在这种情况下,对象数组可能是更好的数据结构。考虑下面的例子:

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

这里有一种可能使用您的代码作为基础(即2个数组):

//比较函子
功能分拣机(a、b){
返回a.name.localeCompare(b.name);
}
//构建一个有序的对象数组,如
//[{“名称”:“foo”,价格:123},…]
//按公司名称排序(区域设置识别顺序)
功能mysort(公司、价格){
var-res=[];
对于(变量i=0;i”;
}
文件。编写(companyTotal);

在chrome 6.0.427.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
// 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);