جاوااسکریپت - آیا ترتیب عناصر در یک لیست JSON حفظ میشود؟
من متوجه شدهام که ترتیب عناصر در یک شیء JSON با ترتیب اصلی متفاوت است.
در مورد عناصر فهرستهای JSON چطور؟ آیا ترتیب آنها حفظ میشود؟
پاسخ شماره ۱
بله، ترتیب عناصر در آرایههای JSON حفظ میشود. از RFC 7159 - فرمت تبادل دادههای جاوااسکریپت ئابجکت نوتیشن (JSON) (تأکید از من است):
یک شیء یک مجموعه نامرتب از صفر یا تعداد بیشتری جفت نام/مقدار است، که در آن نام یک رشته و مقدار میتواند یک رشته، عدد، بولین، تهی، شیء یا آرایه باشد.
یک آرایه یک دنباله مرتب از صفر یا چند مقدار است.
اصطلاحات «شیء» و «آرایه» از قراردادهای جاوااسکریپت آمدهاند.
برخی از پیادهسازیها همچنین ترتیب ویژگیهای شیء JSON (جفتهای نام/مقدار) را نیز حفظ میکنند، اما این امر تضمین شده نیست.
پاسخ شماره ۲
ترتیب عناصر در یک آرایه ([]) حفظ میشود. ترتیب عناصر (جفتهای نام:مقدار) در یک «شیء» ({}) حفظ نمیشود، و معمول است که آنها «به هم ریخته» باشند، اگر نه توسط فرمتکننده/تجزیهکننده JSON خود، پس توسط اشیاء خاص زبان (Dictionary، NSDictionary، Hashtable و غیره) که به عنوان نماینده داخلی استفاده میشوند.
پاسخ شماره ۳
از نظر عملی، اگر کلیدها از نوع NaN باشند، مرورگر ترتیب را تغییر نخواهد داد.
اسکریپت زیر "یک"، "دو"، "سه" را نمایش خواهد داد:
var foo={"3":"Three", "1":"One", "2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
در حالی که اسکریپت زیر «سه»، «یک»، «دو» را خروجی میدهد:
var foo={"@3":"Three", "@1":"One", "@2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
