Я делал много алгоритмов в JS, и в некоторых из них более эффективно создавать объект (словарь) для более быстрого (постоянный поиск O (1) или O (N)), а не массив.
например.
const items1 = {
'a': 2,
'b': 2
}
эффективнее, чем иметь
const items1 = [
['a', 2],
['b', 2]
]
для поиска данных с точки зрения времени и (пространства?) сложности?
но что, если бы у меня был массив в качестве значения внутри объекта? это все еще быстрее, чем просто массив?
const items1 = {
1: [['a', 2]],
2: [['b', 2]]
}
"Быстрее" за что? Если вы можете написать items1[foo], это практически мгновенно. Если вам нужно написать items1.find(i => i[0] == foo), это бесконечно медленнее.
В основном всегда будет более эффективно иметь пары ключ-значение в объекте, а не хранить их в виде двухэлементных массивов. Поиск значения по его ключу является (частью) целью использования объектов в JS, поэтому движки всегда оптимизируют это общее использование. Они, вероятно, не будут оптимизировать итерацию по массиву и сопоставление первого элемента, чтобы таким же образом искать второй.
так что лучше всего было бы что-то вроде const items1 = {'1': 'a2', '2': 'b2'}?
Нет "лучшего"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


and in some of them it's more efficient to create an object (dictionary) for faster (constant lookup O(1) or O(N)) rather than an array
Объекты JavaScript — это не просто словари. Но да, поиск свойства по имени в объекте на много быстрее, чем поиск совпадения в массиве. (Принимая во внимание, что поиск конкретной записи в массиве, скажем, a[0], выполняется так же быстро, если не быстрее, чем поиск свойства в объекте, потому что массивы являются объекты [больше в моем блоге], но могут быть дополнительно оптимизированы до настоящих массивов.)
but what if I had an array as the value within the object? is it still faster than having just an array?
Этого не может быть. Если вы это сделаете, то вам нужно:
Принимая во внимание, что если бы вы использовали только массив, вам не понадобился бы шаг 1.
Примечание: у вас слишком много [ и ], если только вам не нужен объект со свойствами, значениями которых являются массивы содержащий. Так:
const items1 = {
1: ['a', 2],
2: ['b', 2]
}
так что лучше всего было бы что-то вроде const items1 = {'1': 'a2', '2': 'b2'}?
@totalnoob - я не могу понять, что вы пытаетесь сравнить.
Ваша сложность смешивания повышается с эффективностью. Не может быть, чтобы ваш первый пример был значительно больше эффективный, чем ваш второй.