Размер массива имеет значение в JavaScript в этом случае?

Это означает, что группировка атомарная , и это выбрасывает информацию об отслеживании в обратном порядке для подобранной группы. Так, это выражение является притяжательным; это не отступит, даже если выполнение так будет единственным путем к regex в целом для следования. Это "независимо" в том смысле, что это не сотрудничает, через отслеживание в обратном порядке, с другими элементами regex для обеспечения соответствия.

6
задан Storm 22 September 2009 в 15:16
поделиться

6 ответов

Ваш код не выделяет так много памяти, поэтому вам не о чем беспокоиться. Массивы Javascript достаточно умны. Однако я по-прежнему считаю, что в этом случае вам следует использовать объект вместо массива ...

var num = 80123;
var obj = {};
obj[num] = { Name: "Josh" };

alert(obj[80123].Name);
6
ответ дан 10 December 2019 в 00:41
поделиться

Массивы в Javascript - это просто хэши с несколькими специальными свойствами (в основном это свойство "length" всегда будет возвращать на единицу больше, чем самый высокий целочисленный ключ).

Я не верю, что какая-либо из реализаций будет выделять огромный объем памяти только потому, что вы изначально присвоили что-то действительно высокому индексу. 1143022]

3
ответ дан 10 December 2019 в 00:41
поделиться

Как вы определяете свой массив? Если вы используете объект Array , вы должны иметь более одного аргумента, чтобы браузер интерпретировал аргументы как значения, а не длину массива. Я всегда стараюсь использовать синтаксис литерального массива: a = [80123]; или a = [80123,80124];

0
ответ дан 10 December 2019 в 00:41
поделиться

На этот вопрос уже намекали раньше:

Что требует меньше памяти: массив Javascript или объект Javascript?

Теоретически в Javascript массив IS объект. Единственное, что изменяется (в памяти) в массиве, - это свойство .length. Он покажет следующий по величине индекс массива, но это не означает, что на самом деле в выделенном массиве столько элементов.

0
ответ дан 10 December 2019 в 00:41
поделиться
  1. Наличие этого составного первичного ключа замедляет SELECT совсем немного, хотя эффект в значительной степени незначителен и не стоит беспокоиться.
  2. Индексирование этих столбцов ] вообще замедляет ваши INSERT , и вы определенно делаете достаточно INSERT , чтобы беспокоиться об этом. Это гораздо более беспокоит, если это таблица MyISAM, где INSERT блокирует таблицу, чем если это таблица InnoDB. Если, используя первичный ключ auto_increment, вы сможете оставить эти столбцы неиндексированными, вы выиграете от этого изменения. Тем не менее, если вам все равно нужно поддерживать индексирование этих трех столбцов (например, если вам нужно обеспечить уникальность их комбинации), это не повлияет на производительность.
0
ответ дан 10 December 2019 в 00:41
поделиться

Try running the following code in Firebug:

var a = [];
a[663] = "a";
a.length == 664;

this returns

true

If you then try

console.log(a)

you will get:

[undefined, undefined, undefined,  ...... , undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "a"]

How much memory this consumes may be a matter of which engine you're using but it looks like there are a lot of slots being allocated to hold no value.

I think what you really want to use is just a plain Object-style map like this:

var a = {};
a[664] = "a";
a[323] = "b";
a

which yields:

Object 664=a 323=b

which is much more appropriate for mapping associations of id->object.

If you need to iterate through this object later on to visit all the objects, use the following code:

for(var id in a){
  if(a.hasOwnProperty(id)){
    console.log("id:",id," object:",a[id]);
  }
}
1
ответ дан 10 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: