क्योंकि क्या ECMA स्टैंडर्ड तरह सरणियों के बारे में शामिल किया गया है की
(एक बहुत ही सरल तरीके से) :
- यदि तुलना में 1 ए एक शर्त नीचे आती है।
- यदि प्राप्त होता है -1 स्थिति को बनाए रखता है और बी
- की ओर बेहतर रैंकिंग परिभाषित करता है तो 0 प्राप्त नहीं करता है।
सभी ब्राउज़र में समान व्यवहार की गारंटी करने के सबसे सुरक्षित तरीका है:
:
// descending order
abc =[10,2,4,1];
abc.sort(function(a , b){
return a > b ? -1 : 1;
});
// ascending order
abc.sort(function(a , b){
return a > b ? 1 : -1;
});
आदिम वस्तुओं के लिए की तरह वस्तुओं के लिए लघु संस्करण
// descending order
abc.sort(function(a , b){
return b - a;
});
// ascending order
abc.sort(function(a , b){
return a - b;
});
उपयोग करने के लिए posible है
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 27 },
{ name: 'And', value: 31 },
{ name: 'The', value: -12 },
{ name: 'Zeros', value: 37 },
{ name: 'Magnetic', value: 37 }
सही तरीका है:
items.sort(function(a , b){
var result = a == b ? 0 : b > a ? -1 : 1
if(result === 0)
{
// implement a tight break evaluation
}
return result ;
});
यह सही तरीका है क्योंकि जिस तरह से ब्राउज़र पुनरावृत्त करता है उसे ईसीएमए मानक और ब्राउज़र में परिभाषित नहीं किया जाता है, अलग-अलग तरीकों से फिर से शुरू हो सकता है। उदाहरण के लिए अधिकांश ब्राउज़रों को ऊपर से नीचे तक चलाया जाता है, लेकिन क्रोम अंतिम के साथ पहला तत्व पुनरावृत्त करता है और रास्ते पर जाता है। तो कड़े होने के मामले में अधिकांश ब्राउज़रों के अलग-अलग परिणाम हो सकते हैं।
एक ही समाधान "एमएम/डीडी/yyyy" –