Краткое руководство

Неделю назад я создал алгоритм, основанный на порядке объекта в JavaScript. Если вы пришли с языка без ожидаемого порядка объектов, вы можете сказать «Что ?!» Сейчас.

Если вы знакомы с JavaScript и его причудами, я все равно ожидал бы такого же ответа, поскольку он имеет несколько нюансов и, кажется, не является широко известным. Давайте посмотрим на объект, который я использовал:

Милый, мы вернули наш объект в том порядке, в котором мы его определили. Затем мы можем перебирать этот объект, используя for (let coin in Coins) {/*do work*/}. Это работает, если мы определяем каждый ключ отдельно, возвращая хронологический порядок:

Однако есть особый случай, когда это практическое правило не срабатывает: если вы пытаетесь использовать символы или целые значения в качестве ключей (да, даже интерпретированные целочисленные значения).

Это результат, которого вы можете ожидать от любой реализации стандарта ES6, выпущенной для выпуска Javascript 2015 года.

Это изменение поведения связано с изменением реализации внутреннего метода ownPropertyKeys (гарантированный порядок), который все используют Reflect.ownKey, Object.getOwnPropertyNames и Object.keys, но имеют (негарантированный порядок). Чтобы перечислить их, используйте Reflect.enumerate или for-in loop.

Некоторые заметки…

  • Хотя это предсказуемое и ожидаемое поведение, пользователь может использовать старую версию JavaScript, где это не было стандартным, хотя это было частой реализацией.
  • Для более гибкой и надежной обработки пар ключ-значение и их порядка попробуйте новый JavaScript Map Object.

Ресурсы