IE9-ում օբյեկտի հատկությունների թվային ստեղները դասավորված են, և դա հանգեցնում է IE9-ում կրկնման տարբեր կարգի` համեմատած IE8-ի հետ, որտեղ կարգը պահպանվում է, երբ այն տեղադրվում է:
var obj = {
"5": "John",
"1": "Kumar",
"3": "Rajesh",
"2": "Yogesh"
}
for(var key in obj) alert(key)
Արդյունք
//1,2,3,4 in IE9
//5,1,3,2 in IE8, IE7
Կարո՞ղ եմ, այնուամենայնիվ, անջատել այս ավտոմատ տեսակավորումը IE9-ով: Եթե ոչ, ապա հնարավո՞ր է զննարկիչին ինչ-որ կերպ հասկացնել, որ ստեղները պետք է նույնականացվեն որպես տողեր, այլ ոչ թե թվեր (բայց առանց բացատ, _ կամ որևէ այլ հատուկ նիշ ավելացնելու):
Խնդրում եմ առաջարկեք!!
Ահա կոդի նմուշի հատվածը, որտեղ ես բախվում եմ այս խնդրին:
function Person(id, name) {
this.id = id;
this.name = name;
}
var persons = new Object();
var p1 = Person("5","John")
persons[5]=p1
var p2 = Person("1","Kumar")
persons[1]=p2
var p3 = Person("3","Rajesh")
persons[3]=p3
var p4 = Person("4","Yogesh")
persons[4]=p4
for(var id in personId){
var p = persons[id];
var option = new Option(p.name, p.id);
select.options[select.options.length] = option;
}
Այս սկրիպտի կողմից ստեղծված ընտրված ընտրանքները դասավորված են ըստ ID-ի IE9-ում, որտեղ ինձ անհրաժեշտ է այն նույն հաջորդականությունը, որով այն տեղադրվում է:
for..in
-ը երաշխավորված չէ, որ կհայտնվի որևէ կոնկրետ հերթականությամբ (համենայն դեպս, ես երբեք չեմ գտել որևէ բան, որն այդպես է ասում, և IE8-ը և ավելի վաղ դրանք չեն անում ըստ հերթականության): ; փորձարկման դեպք: Որոշ իրականացումներ կարգի են բերում զանգվածների ինդեքսները, նույնիսկ եթե դրանք չեն համապատասխանում համարժեք օբյեկտի հետ (օրինակ, Firefox-ը թողարկում է 5, 1, 3, 2, ապա 1, 2, 3, 5 իմ կապակցված փորձարկման դեպքում), բայց ոչ բոլորը: . Նույնիսկ պարտադիր չէ, որ լինի նոսր զանգված; փորձարկման դեպք: Եթե պատվերի կարիք ունեք, օգտագործեքfor
հանգույց կամ նոր ES5 ֆունկցիաներից մեկը: 30.03.2012length
հատկությունն է (գումարած նախատիպի բոլոր լրացուցիչ մեթոդները): Ես իմ պատասխանին նշում եմ ավելացրելfor...in
-ի մասին: 30.03.2012sort()
զանգին փոխանցեք սովորական համեմատիչ ֆունկցիա:arr.sort(function(a, b) { return a.name.localeCompare(b.name); });
-ի պես մի բան 30.03.2012Array
-ը ժառանգում էObject.prototype
-ից և այլ բան նշված չէfor...in
վարքագծի մասին, պետք է հետևել, որ զանգվածներն իրենց պահում են նույնը, ինչ օբյեկտները: 30.03.2012