我的代码:
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 :(得分: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' });
答案 1 :(得分: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
答案 2 :(得分: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);
在chrome 6.0.427.0 dev上测试