這應該是一個簡單的方法。我只是不知道。使用Javascript從Json對象獲取最大值
如何從javascript中獲取這段JSON的最大值。
{"data":{"one":21,"two":35,"three":24,"four":2,"five":18},"meta":{"title":"Happy with the service"}}
我需要的鍵和值是:
"two":35
,因爲它是最高
感謝
這應該是一個簡單的方法。我只是不知道。使用Javascript從Json對象獲取最大值
如何從javascript中獲取這段JSON的最大值。
{"data":{"one":21,"two":35,"three":24,"four":2,"five":18},"meta":{"title":"Happy with the service"}}
我需要的鍵和值是:
"two":35
,因爲它是最高
感謝
var jsonText = '{"data":{"one":21,"two":35,"three":24,"four":2,"five":18},"meta":{"title":"Happy with the service"}}'
var data = JSON.parse(jsonText).data
var maxProp = null
var maxValue = -1
for (var prop in data) {
if (data.hasOwnProperty(prop)) {
var value = data[prop]
if (value > maxValue) {
maxProp = prop
maxValue = value
}
}
}
這是我的功能最大的關鍵
function maxKey(a) {
var max, k; // don't set max=0, because keys may have values < 0
for (var key in a) { if (a.hasOwnProperty(key)) { max = parseInt(key); break; }} //get any key
for (var key in a) { if (a.hasOwnProperty(key)) { if((k = parseInt(key)) > max) max = k; }}
return max;
}
+1是正確處理負值的唯一解決方案。 – 2013-08-15 02:41:27
如果你有underscore:
var max_key = _.invert(data)[_.max(data)];
這是如何工作的:
var data = {one:21, two:35, three:24, four:2, five:18};
var inverted = _.invert(data); // {21:'one', 35:'two', 24:'three', 2:'four', 18:'five'};
var max = _.max(data); // 35
var max_key = inverted[max]; // {21:'one', 35:'two', 24:'three', 2:'four', 18:'five'}[35] => 'two'
你也可以遍歷對象,你解析JSON後。
var arr = jQuery.parseJSON('{"one":21,"two":35,"three":24,"four":2,"five":18}');
var maxValue = 0;
for (key in arr)
{
if (arr[key] > maxValue)
{
maxValue = arr[key];
}
}
console.log(maxValue);
使用hasOwnProperty()是一個很好的觀點。 – 2010-04-12 09:41:56
@Insin hasOwnProperty是什麼意思?爲什麼使用eval? – systempuntoout 2010-04-12 09:44:06
@systempuntoout hasOwnProperty可以防止頑皮的庫向Object.prototype添加東西,因爲我們不知道將執行此代碼的完整上下文。 我用eval()作爲JSON的問題 - JSON是一種文本格式,因此總是採用符合json.org規範的字符串形式。這可能是問題提供者將JSON與對象文字符號混淆(有很多很多誤導教程/文章,這些文章對此沒有幫助),這是我爲什麼使用JSON文本的原因。 – 2010-04-12 10:35:30