2012-01-12 11 views
5

जावास्क्रिप्ट में किसी बच्चे ऑब्जेक्ट का अधिकतम मान ढूंढने का एक शानदार तरीका क्या होगा?किसी बच्चे ऑब्जेक्ट का अधिकतम मान

उदाहरण:

(यहाँ json के रूप में दिखाया गया है) इस वस्तु की अधिकतम मात्रा मान निकालने:

{"density":[ 
    {"price":1.22837, "quantity":48201}, 
    {"price":1.39837, "quantity":28201}, 
    {"price":1.40107, "quantity":127011}, 
    {"price":1.5174, "quantity":75221}, 
    {"price":1.60600, "quantity":53271} 
]} 

किसी भी सलाह के लिए धन्यवाद!

पुनश्च: बस स्पष्ट करने के लिए: निश्चित रूप से मैं के माध्यम से लूप कर सकते थे, लेकिन मैंने सोचा एक और अधिक सुरुचिपूर्ण तरीका होगा ...

+0

इंडेंटिंग अच्छा होगा – Ibu

+0

मुझे खेद है, पहचान नहीं आया ... – haemse

+0

क्या यह वास्तव में एक ऑब्जेक्ट या JSON स्ट्रिंग है? – Jivings

उत्तर

9

सरणी प्रोटोटाइप के reduce विधि नहीं है ऐरे तरीकों। ऐसी लाइब्रेरी वाला समाधान

var max = arr.get("quantity").max(); 

जैसा दिखता है जो उपर्युक्त जैसा ही होगा, लेकिन अच्छी तरह से व्यक्त किया गया है।

+0

धन्यवाद, यही वह है जिसे मैंने खोजा! – haemse

+0

'कमी' एक महान, सरल और सुरुचिपूर्ण समाधान है। धन्यवाद! –

2

कोई रास्ता नहीं माध्यम से पाशन के अलावा अन्य नहीं है, क्योंकि आप हर बच्चे को यात्रा करने के लिए की जरूरत है यह देखने के लिए कि quantity पैरामीटर नया अधिकतम है या नहीं। दूसरे शब्दों में, समस्या की जटिलता ओ (एन) है। बच्चों मात्रा द्वारा आदेश दिया गया था, तो यह होगा एक अलग कहानी (यानी सिर्फ सूची में पहले या आखिरी बच्चा मिलता है।)

कुछ निम्नलिखित ...

var json = '{"density":[{"price":1.22837,"quantity":48201},{"price":1.39837,"quantity":28201},{"price":1.40107,"quantity":127011},{"price":1.5174,"quantity":75221},{"price":1.60600,"quantity":53271}]}' 

var x = JSON.parse(json); 
var max = 0; 

x.density.forEach(function(item){ 
    if (item.quantity > max) max = item.quantity; 
}); 

इस चलने के बाद की तरह, अधिकतम अधिकतम मात्रा

नोट करें कि आपने हमें सही जेसन नहीं दिया है, इसलिए मैंने इसे थोड़ा सा tweaked। रन पर क्लिक करें और अपने कंसोल http://jsfiddle.net/e3dQe/

+0

अच्छा सुझाव, thx – haemse

0

कैसे के बारे में अधिकतम() विधि में देखो -

यहाँ एक उदाहरण है? लेकिन पहले आपको

var obj = // your object 
var values = new Array(); 

for (key in obj) { 
    values.push(obj[key]) 
} 

var max = values.max() 

नहीं और अधिक सुंदर, लेकिन एक अलग समाधान एक सरणी में सभी मूल्यों को इकट्ठा करने की आवश्यकता होगी ...।

var arr = JSON.parse(objstring)["density"]; 
var max = arr.reduce(function(a, b) { 
    return Math.max(a, b.quantity); 
}, 0); 
कुछ

एक अन्य समाधान होगा

तरह
var max = Math.max.apply(null, arr.map(function(item){ 
    return item["quantity"]; 
})); 

अधिक "सुंदर" तरीके के लिए वहाँ कार्यात्मक पुस्तकालयों जो गेटर कारखाने कार्य करता है और अधिक प्रदान कर रहे हैं:

संबंधित मुद्दे