2012-07-24 101 views
1

我有以下的JavaScript數組,排序Multideminsional陣列

var myArr= [{ 
    "key" : "Consumer Discretionary", 
    "values" :[ 
       [1146369600000, 26.425199957521], 
       [1138683600000, 27.38478809681], 
       [1141102800000, 27.371377218208], 
       [1143781200000, 26.309915460827] 
       ]}, 
    { 
    "key" : "Consumer Staples", 
    "values" :[ 
       [1159588800000, 7.2800122043237], 
       [1141102800000, 7.1187787503354], 
       [1167541200000, 8.351887016482], 
       [1146369600000, 8.4156698763993] 
       ]} 
    ]; 

我如何按升序「鑰匙」可選消費品,然後消費品的「價值」進行排序,以便它看起來就像

消費者可選: -

[1138683600000, 27.38478809681] 
[1141102800000, 27.371377218208] 
[1143781200000, 26.309915460827] 
[1146369600000, 26.425199957521] 

對此有何幫助? 在此先感謝

+2

你嘗試過什麼。你知道數組對象的內建'.sort()'方法嗎? – hugomg 2012-07-24 12:06:02

回答

2

嘗試以下操作:

function valuePredicate(a,b){ 
    return a[0]!==b[0] ? a[0]-b[0] : a[1]-b[1]; 
} 

for(var i=0; i < myArr.length;++i){ 
    myArr[i].values.sort(valuePredicate); 
} 

Live demo

+0

非常感謝,它工作完美。 – shabeer90 2012-07-24 12:16:14

+0

我把這個數組加了一點,就像下面的 「values」:[{「x」:0,「y」:2.42},{「x」:1,「y」:2.38},{「x」 :2,「y」:2.37},{「x」:3,「y」:2.30}]}]; 但無法設法與「x」排序,任何想法爲什麼? – shabeer90 2012-07-25 08:24:39

+1

@ shabeer90在這種情況下,您需要使用'return a.x!== b.x? a.x-b.x:a.y-b.y;'... – Engineer 2012-07-25 08:30:45