इस तरह की एक सरणी के साथ:मैं कॉफ़ीस्क्रिप्ट के साथ एक ऐरे को कैसे सॉर्ट करूं?
users.sort (a,b) ->
return if a.lname.toUpperCase() >= b.lname.toUpperCase() then 1 else -1
मैं इस तरह एक समारोह उपयोग करने की कोशिश:
sortBy = (field, reverse, primer) ->
key = (x) ->
return if primer? then primer x[field] else x[field]
return (a,b) ->
A = key a
B = key b
return (A < B ? -1 : (A > B ? 1 : 0)) * [1,-1][+!!reverse]
users = [
{ id: 1, fname: 'Fred', lname: 'Flinstone', state: 'CA' },
{ id: 2, fname: 'George', lname: 'Winston', state: 'FL' },
{ id: 3, fname: 'Luke', lname: 'Skywalker', state: 'CA' }
]
और आप coffeescript साथ अंतिम नाम से क्रमबद्ध करना चाहते हैं, तो आप ऐसा कर सकते हैं
जिसे इस तरह से बुलाया गया था:
users.sort sortBy "lname", false, (a) ->
return a.toUpperCase()
लेकिन यह सरणी को ठीक तरह से सॉर्ट नहीं किया गया।
क्या 1 से अधिक फ़ील्ड द्वारा सॉर्ट करने का कोई तरीका है, यानी पहले राज्य द्वारा क्रमबद्ध करें, और फिर अंतिम नाम से? मैं ऊपर "sortby" फ़ंक्शन पर सुधार करने की उम्मीद कर रहा था और कम से कम 2 फ़ील्ड द्वारा क्रमबद्ध करने की क्षमता जोड़ सकता था।
बात किस तरह की "बेहतर" है कि तुलना में हो सकता है पाया के आधार पर? (असल में मैं स्थिर रखने में मदद के लिए '<=' और '' '' '' 'का उपयोग नहीं करता।) – Pointy
यह JSON नहीं है। –
आप वहां टर्नरी ऑपरेटर का उपयोग कर सकते हैं: 'a.lname.toUpperCase()> b.lname.toUpperCase() वापस करें? 1: -1' –