Я не уверен, почему вы только на полпути с вашим литеральным синтаксисом объекта (JSON имитирует объявления литерала объекта), но он также создал ошибку для вас. Вы переписываете myObject ["123"] во втором назначении.
Вы могли бы гораздо проще написать, что весь раздел 1 как:
var myObject = {
"123": {
"A": 123,
"B": 456,
"C": 123,
"D": 456
},
"124": {
"A": 123,
"B": 456
},
"125": {
"A": 123,
"B": 456
}
}
Второй и третий, нет такого понятия, как «первое свойство в массиве.» Это довольно распространенная ошибка для людей, которые пишут javascript (а не только новые люди, но люди, которые писали его в течение многих лет).
ни при каких обстоятельствах каких-так всегда является какой-либо частью объекта когда-либо «Первым» или «второго» или имеют какой-либо порядок в объекте. Это четко указано в спецификации ECMA-262. Производители браузеров иногда приспосабливаются к этому поведению, поэтому «он работает» иногда.
Это потому, что объекты не являются массивами, и они никогда не будут. Если вы хотите, чтобы все было в порядке массива, вам нужно использовать массив. Позвольте мне спросить вас, что такое «первый» элемент в документе? Ясно, что это глупый вопрос, но это доказывает. Объекты не поддерживают порядок, это то, что делают массивы.
Так что используйте массив для этого. Квадратные скобки обозначают массив, который не принимает строку в качестве ключа (это то, что делают объекты). Чтобы сделать вещи более запутанными, массивы являются объектами, поэтому они могут действовать как объекты - не путайте это и считайте объекты массивами.
Назначения свойств в JavaScript не являются аддитивными. Вы заменяете полный объект, хранящийся в ключе '' 123 "' - '{" A ": 123," B ": 456};' во второй строке, а не добавляете больше элементов - '{" C ": 123, «D»: 456}, 'к нему. – Anurag
Свойства не гарантируются итерацией по порядку. Поэтому вы не должны полагаться на свой код, чтобы удалить первое свойство http://stackoverflow.com/questions/5773950/how-to-keep-an-javascript-object-array-ordered-while-also-maintaining-key -lookup –
На самом деле, мне действительно не нужно первое свойство ... достаточно откусить одно свойство за раз, и спасибо за оповещение о том, что я заменяю элементы! –