2013-01-08 19 views
16

पर आधारित है मेरे पास नीचे एक वस्तु है। मूल्य के आधार पर आरोही क्रम में इसे पुनर्व्यवस्थित करने का प्रयास कर रहा है। जावास्क्रिप्ट सरणी सॉर्ट विधि के समान।जावास्क्रिप्ट सॉर्ट कुंजी मूल्य जोड़ी ऑब्जेक्ट मूल्य

var masterList = { 
    "1": "google", 
    "2": "yahoo", 
    "3": "msn", 
    "4": "stackoverflow", 
    "5": "github", 
    "6": "jsfiddle", 
    "7": "amazon", 
    "8": "ebay" 
} 

कृपया मुझे बेहतर समाधान पता है ...

+0

इस पोस्ट में आप में मदद मिलेगी कि यह कैसे करना है, http://stackoverflow.com/questions/881510/json-sorting-in-jquery – Adil

+0

masterList.sort() –

उत्तर

44

JavaScript ऑब्जेक्ट के कोई आदेश नहीं है। भले ही अधिकांश ब्राउज़र उसी क्रम में पुनरावृत्ति करते हैं, गुणों को बनाया गया था, फिर भी कोई गारंटी नहीं है, इसलिए ऑब्जेक्ट्स पर सॉर्टिंग समर्थित नहीं है।

अधिक जानकारी के लिए यहाँ देखें: Does JavaScript Guarantee Object Property Order?

तुम भी इस मामले पर क्या John Resig has got to say में रुचि हो सकती। उन्हें सुलझाने के लिए, बस नियमित सरणी के sort विधि का उपयोग

var masterList = [ 
    { key: 1, val: "google" }, 
    { key: 2, val: "yahoo" }, 
    { key: 3, val: "msn" }, 
    { key: 4, val: "stackoverflow" }, 
    { key: 5, val: "github" }, 
    { key: 6, val: "jsfiddle" }, 
    { key: 7, val: "amazon" }, 
    { key: 8, val: "ebay" } 
]; 

फिर,:


आप एक तरह से करने योग्य सूची की ज़रूरत है, तो आप ऑब्जेक्ट की श्रृंखला के रूप में संग्रहीत करना होगा: http://jsfiddle.net/ASrUD/

+0

बहुत बहुत धन्यवाद – r1webs

+0

हो सकता है कि मैं सिर्फ डॉन की कोशिश करो ' टी को समझें(), लेकिन यह संख्यात्मक मानों के लिए काम नहीं करता है। 'कुंजी' द्वारा क्रमबद्ध करने का प्रयास अपरिभाषित फ़ंक्शन देता है। – dval

+1

@dval - यह 'लोकेल कॉम्पारे' है जो आपको फेंक रहा है। यदि आप 'key' द्वारा सॉर्ट कर रहे हैं, तो बस 'ए - बी' वापस करें। –

5
var obj = { 
    "1": "google", 
    "2": "yahoo", 
    "3": "msn", 
    "4": "stackoverflow", 
    "5": "github", 
    "6": "jsfiddle", 
    "7": "amazon", 
    "8": "ebay" 
}; 

var arr = []; 

for (var key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     arr.push(obj[key]); 
    } 
} 

alert(arr.sort()); 
:

masterList = masterList.sort(function (a, b) { 
    return a.val.localeCompare(b.val); 
}); 

यहाँ बेला है 10

यह आपके मानों को आरोही क्रम में क्रमबद्ध करेगा। मैं आपको कभी-कभी किसी ऑब्जेक्ट में कनवर्ट करने के तरीके के साथ वापस कर दूंगा।

+0

इस समाधान के साथ एकमात्र समस्या यह है कि आप मुख्य मानों को याद करते हैं परिणामस्वरूप सरणी – AXL

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