2013-05-20 107 views
1

我有以下變量的最大價值:獲取從一個JavaScript多維數組

response = "['2013-04-20', 10568]", "['2013-04-21', 4566]", "['2013-04-22', 14228]", "['2013-04-23', 5056]", "['2013-04-24', 25837]", "['2013-04-25', 39723]", "['2013-04-26', 37297]", "['2013-04-27', 23482]", "['2013-04-28', 31371]", "['2013-04-29', 25088]", "['2013-04-30', 27726]", "['2013-05-01', 26287]", "['2013-05-02', 15988]", "['2013-05-03', 34628]", "['2013-05-04', 13415]", "['2013-05-05', 24566]", "['2013-05-06', 33443]", "['2013-05-07', 15676]", "['2013-05-08', 18143]", "['2013-05-09', 28611]", "['2013-05-10', 46631]", "['2013-05-11', 24315]", "['2013-05-12', 15183]", "['2013-05-13', 13154]", "['2013-05-14', 9185]" 

由PHP腳本給我。我做了以下操作:

var organicJson = response.replace(/"/g,''); 
organicJson = "[" + organicJson + "]"; 
organicJson = organicJson.replace(/'/g,'"'); 
var myOrganicData = JSON.parse(organicJson); 

以獲得所需的形式(對於其他範圍),這是一個多維陣列。在JavaScript中如何遍歷它並獲得最大價值(在上面的示例中我認爲是46631)以及相應的日期(例如2013-05-10)? 這裏是的jsfiddle一個例子:http://jsfiddle.net/DanielaVaduva/PYEhK/

+0

你可以寫一個正常的循環。 – Diode

+0

變量'response'中有什麼?它實際上是一個數組嗎?如果是這樣,它是一個字符串數組還是一個數組數組? – Guffa

+0

@Guffa響應它只是一個字符串,我發回到我的JavaScript與PHP回聲函數,然後我做了最終的操作... –

回答

2

我會建議使用Underscore庫,那麼很容易找到一個最大:

var m = _.max(myOrganicData, function(item){ 
    return item[1]; 
}) 

alert(m); 
alert(m[1]); 

Here is the code ..

+0

有沒有其他方法不使用Underscore 1.4.3? –

+0

那麼,那麼可能只是寫你自己的循環。 – bingjie2680

+0

現在我會使用Underscore庫,非常感謝你指點我,我非常感謝。 :) –

1

如果響應的確是一個多維陣列然後這將工作,我敢肯定有一個整潔或更有效的方式來實現這一目標,但這應該是在正確的方向推動

var response = [['2013-04-20', 10568], ['2013-04-21', 4566], ['2013-04-22', 14228], ['2013-04-23', 5056], ['2013-04-24', 25837]]; 

function returnLargest(multiArr){ 
    var lastNum, output = []; 

    for(var i=0; i<multiArr.length; i++){ 
    if(!lastNum){ 
     lastNum = multiArr[i][1]; 
     output[0] = multiArr[i][0]; 
    } else if(lastNum < multiArr[i][1]){ 
     lastNum = multiArr[i][1]; 
     output[0] = multiArr[i][0]; 
    } 
    } 
    output.push(lastNum); 
    return output; //In this case ['2013-04-24', 25837] 
}