При определении структуры пары ключ: значение, когда литерал объекта предпочтительнее определения массива? - PullRequest
0 голосов
/ 27 сентября 2019

Предположим, я хочу определить структуру, которая содержит различные комбинации ключ: значение.Когда я предпочел бы первое по второму?

hashMap = [ ] 

hashMap["first"] = 1

object = { first : 1 }

object["first"] == hashMap["first"] // so they are the same basically

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Всегда используйте объекты для нечисловых наборов ключей.На это есть разные причины:

(1) Массивы оптимизированы для доступа к цифровым клавишам, поэтому использование нечисловых клавиш будет медленнее.Объекты предназначены для произвольных хранилищ значений ключей.

(2) Сериализация удаляет все нечисловые ключи из массивов:

const arr = [];
arr.key = "test";
console.log(JSON.parse(JSON.stringify(arr))); // []

(3) Свойства и методы массива могут сбить вас с толку:

  • .length учитывает только цифровые клавиши.

  • .map, .forEach, ... будет выполнять итерацию только по цифровым ключам.

0 голосов
/ 27 сентября 2019

Всегда.Массивы предназначены для упорядоченных списков значений.Хотя они наследуются от Object.prototype, никто не будет ожидать, что массив будет иметь значения вне его числа, указывающего (в большинстве случаев) - это будет основным источником путаницы.Это не то, для чего нужны массивы.

Если вам нужна коллекция пар ключ-значение, всегда предпочитайте обычный объект массиву.Объекты предназначены для коллекций пар ключ-значение.Массивы предназначены только для упорядоченных наборов значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...