проблема индекса массива javascript! - PullRequest
0 голосов
/ 04 августа 2010

var a = новый массив ();a [1] = 'A';b [10] = 'B';console.log (а);/ [undefined, "A", неопределенный, неопределенный, undefined, undefined, undefined, undefined, undefined, undefined, "B"] / Я хочу удалить неопределенный элемент, но каков процесс ??*

Ответы [ 4 ]

6 голосов
/ 04 августа 2010

Во-первых, jQuery не имеет к этому никакого отношения.

Во-вторых, массивы «заполняются автоматически».Если вы определите индекс 10, все индексы 0 - 9 будут заняты автоматически, именно так работают массивы Javascript.

Вероятно, вы ищете объект:

var a = {};
a[1] = 'A';
a[10] = 'B';

или

var a = {
    1 : 'A',
    10 : 'B'
};
1 голос
/ 04 августа 2010

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

var a = {};
a[1] = 'A';
a[10] = 'B';
1 голос
/ 04 августа 2010

В этом случае вы можете использовать Object вместо Array, например, так:

var a = {}; // or var a = new Object();
a[1] = 'A';
a[10] = 'B';
a['foo'] = 'bar';
a.bar = 'foo'; // same as a['bar'] = 'foo';
console.log(a);
1 голос
/ 04 августа 2010

хорошо, чтобы удалить те undefined части, которые

a[0] = 'A';
a[1] = 'B';

В своем фрагменте вы заполняете элемент индексом 10, который заставляет ECMAscript создать массив с 10 fields. Не существует определений для всех этих полей между 1 и 10, что означает, что они правильно undefined.

Чтобы удалить эти поля, вы должны либо установить правильное значение, либо map значения non-undefined в новый массив, который будет бесполезен, если вы сначала создадите правильный массив.

Создайте истинное object вместо массива (который на самом деле также является объектом), чтобы иметь желаемое поведение.

var a = {};

a[1] = 'A';
a[2] = 'B';

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