изучение языка JavaScriptfor...inПри зацикливании вам всегда будут говорить: используйте его для циклического перебора объектов, а порядок зацикленных свойств ненадежен, поэтому не используйте его вfor...inДелайте логические суждения, которые зависят от порядка свойств объекта.
Но когда мы сами пишем объект, мы несколько раз обновляем его туда-сюда и обнаруживаем, что последовательность зацикленных свойств одинакова?
let user = {
name: "John",
age: 30,
isAdmin: true
};
for(let key in user) {
console.log( key ); // name age isAdmin ← 是一样的啊
}
// 不信再写一个对象
let tom = {
gender: 'male',
hasGirlfriend: false,
isFunny: true
};
for(let key in tom) {
console.log( key ); // gender hasGirlfriend isFunny ← 还是一样的啊
}
В чем дело? Я прочитал это сегоднястатья, объясняетfor...inВ каком порядке зацикливаются свойства объекта?
Прочитав, я понял. Теперь поделитесь со всеми.
Его можно резюмировать одним предложением:Сначала просмотрите целочисленные свойства (целочисленные свойства в порядке возрастания), а затем просмотрите другие свойства в том порядке, в котором они были созданы..
Давайте посмотрим на пример:
let codes = {
"49": "Germany",
"41": "Switzerland",
"44": "Great Britain",
"1": "USA"
};
for(let code in codes) {
alert(code); // 1, 41, 44, 49
}
Конечным результатом обхода является: атрибут1Пройди его сначала,49Наконец пройти это.
здесь1,41,44а также49является целочисленным свойством.
Так что же такое целочисленное свойство?? Мы можем проиллюстрировать следующие результаты сравнения:
String(Math.trunc(Number(prop)) === prop
Когда приведенный выше результат сужденияtrue, prop — целочисленное свойство, в противном случае — нет.
так
-
"49"является целочисленным свойством, потому чтоString(Math.trunc(Number('49'))Результат по-прежнему"49". -
"+49"не является целочисленным свойством, потому чтоString(Math.trunc(Number('+49'))Результат"49",нет"+49". -
"1.2"не является целочисленным свойством, потому чтоString(Math.trunc(Number('1.2'))Результат"1",нет"1.2".
В приведенном выше примере, если вы хотите выполнить цикл в порядке создания, вы можете использоватьшутитьМетоды:
let codes = {
"+49": "Germany",
"+41": "Switzerland",
"+44": "Great Britain",
// ..,
"+1": "USA"
};
for(let code in codes) {
console.log( +code ); // 49, 41, 44, 1
}
(над)