var obj = {
'51' : { 'name':'name1'},
'66' : { 'name':'name2'},
'58' : { 'name':'name3'}
};
$(function() {
s = '';
$.each(obj, function(k, v) {
s += ' '+k;
});
alert(s);
});
Dans IE et Firefox, il est 51 66 58, mais dans Opera et Chrome, il est 51 58 66 Pourquoi sorte Jquery.each() par clé dans l'opéra, le chrome? Que puis-je faire pour conserver la commande native?problème avec JSON
p.s si les clés du tableau est une chaîne, le résultat 51j 66j 58J peut-être l'opéra et essayer de chrome pour convertir les clés en entier où il est possible
var obj = {
"51j" : { "name":"name1"},
"66j" : { "name":"name2"},
"58j" : { "name":"name3"}
};
clés d'objet de, et ils sont des chaînes quoi qu'il arrive. – Skilldrick
il semble que l'opéra et le chrome ne le pensent pas. – ncs
Dans JS, obj [1] et obj ['1'] sont équivalents. Cependant, comme déjà expliqué, l'ordre de for..in itération est laissé indéfini par la spécification. Les navigateurs peuvent retourner les valeurs dans n'importe quel ordre et se comporter "correctement" selon la spécification. Au fil du temps, la compatibilité avec le Web et les autres navigateurs a forcé l'ordre d'insertion la plupart du temps, mais ce n'est toujours pas fiable comme vous l'avez découvert. – hallvors