2014-10-11 65 views
-2

我有一个数组,当我CONSOLE.LOG它,它给我这个:排序阵列被它的值在JavaScript

[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); 
+3

你的数组是错误的声明。 – 2014-10-11 18:50:19

+0

[在JavaScript中通过字段值排序数组中的对象](http://stackoverflow.com/questions/1129216/sorting-objects-in-an-array-by-a-field-value-in- javascript) – 2014-10-11 18:51:50

+2

这不是一个数组。这甚至不是有效的JavaScript。 – JLRishe 2014-10-11 18:54:40

回答

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

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; 
}); 

这应该给你的想法

+0

这不是我想要的。我想按数字排序我的数组。据我所知,这只能在你的例子中以名字命名 – TotuDoum 2014-10-11 19:00:01