Какой предел массивов вы можете создать? - PullRequest
0 голосов
/ 24 апреля 2020

Какой предел массивов вы можете создать? Есть ли ограничение или ограничение браузера?

Идея состоит в том, что я хочу динамически создавать массив для информации о каждом сотруднике (включая имя, активный каталог, номер сотрудника и т. Д. c ...)

L oop через список сотрудников и создать массив:

window["arr_" + employee number]

Затем, когда пользователю это понадобится, мой код вызовет имя массива на основе номера его сотрудника. У кнопки есть empn в качестве атрибута, поэтому я могу передать его:

console.log( window["arr_" + empn] )

Я беспокоюсь, что у меня будет больше сотрудников, которым разрешено создавать массивы.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Чтобы ответить на заданный вами вопрос, ваша проблема не в теоретическом ограничении количества вещей, которые вы можете хранить в массиве, а в практическом ограничении, когда вы начнете исчерпывать память, или сайт будет работать слишком медленно , 100 000, скорее всего, хорошее правило.

Но и здесь есть много других проблем. Прежде всего,

window["anything"]

- это не массив, это свойство объекта окна. И объект window - определенно неподходящее место для хранения списка сотрудников. Трудно сказать с таким небольшим количеством информации, но то, что вы, вероятно, хотите сделать, это создать объект:

var employees = {};

, а затем заполнить его парами ключ: значение, где ключ является чем-то вроде «employee_» + num и значение - это объект, который вы получили от того, что вы зацикливаете:

employees["employee_"+number] = data

Результатом будет объект типа:

{
    "employee_0" : { "name" : "John", "number": 0 }
    "employee_1" : { "name" : "Joe", "number": 1 }
}

, и вы будете ссылаться на них по ключу, вот так:

console.log("Employee 0's name is " + employees["employee_0"].name);

Надеюсь, это поможет. Если вам нужна дополнительная помощь, вам нужно будет уточнить, как вы просматриваете данные о сотрудниках и как они выглядят.

0 голосов
/ 24 апреля 2020

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

Однако максимальная длина массива в соответствии со спецификацией ECMAEdition связана с 32-разрядным целым без знака из-за абстрактной операции ToUint32, поэтому самый длинный из возможных массивов может иметь 232-1 = 4 294 967 295 = 4,29 млрд. Элементов.

...