按javascript中的值排序数组

时间:2014-10-11 18:48:50

标签: javascript arrays sorting

我有一个数组,当我在console.log时,它给了我这个:

[paris: 348589.40826358093, londres: 490078.8871883664, nantes: 6363.461319105993] 

我想按值(数字)对数组进行排序,我想不出怎么做。 我想要一个像这样的值的结果顺序:     [nantes:6363.461319105993,paris:348589.40826358093,londres:490078.8871883664] 我试过这样的事情,但是没有用。

function compare(x, y) {
  return x - y;
}
tab.sort(compare);

2 个答案:

答案 0 :(得分:0)

这个数组声明是错误的。如果要对项目使用名称,则应使用js对象,如下面的代码。

var tab = {paris: 56765, londres: 3456546, 'new york': 25455654}

var tab = [{paris: 56765}, {londres: 3456546}, {'new york': 25455654}]

但是如果你想通过比较函数排序,可以这样做:

var tab = [{name: paris, value: 56765}, {name: londres, value: 3456546}, {name: 'new york', value: 25455654}]

并将比较方法更改为:

function compare(x, y) {
  return x.value - y.value;
}

如果您想在js对象中拥有更多条件,可以使用this js library

答案 1 :(得分:-1)

Array.prototype.sort()

  

可以根据其中一个属性的值对对象进行排序。

    var items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic' },
  { name: 'Zeros', value: 37 }
];
items.sort(function (a, b) {
  if (a.name > b.name) {
    return 1;
  }
  if (a.name < b.name) {
    return -1;
  }
  // a must be equal to b
  return 0;
});

那应该给你一个想法