Val Petruchek

подписывайтесь, а то хуже будет!  

ПОДПИСЫВАЙТЕСЬ НА RSS

« Продовольствие в обмен на нефть
Угадай, что прокомментировали »

JavaScript: создать массив из одной переменной

06.07.08 @ 10:30 — JavaScript

Задача: создать в JavaScript массив из одного элемента, равного значению переменной x.

Очевидное решение var a = new Array(x); — неправильно.

Если переменная x имеет тип number и является целым числом (например, x=5), то вместо массива с одним элементом, равным 5, мы получим пустой массив из пяти элементов. А если x является дробным числом (например, x = 5.2), то мы вообще получим ошибку invalid array length. Если x — строка, то решение сработает.

Причина такого поведения браузеров в том, что при создании массива через Array(x) интерпретатор ведёт себя по-разному в зависимости от типа переменной x. Если он получает тип number, то он трактует этот параметр как длину создаваемого массива, а не как значение нулевого элемента.

Правильный ответ: var a = [x];

5 Comments »

  1. можно ещё проще:
    var a = [x];

    Comment by Andrew Kulinich — 06.07.2008 @ 17:28

  2. О, точно.

    Comment by Val Petruchek — 06.07.2008 @ 18:11

  3. Задача не выполнена.
    После выполнения
    var a = new Array([x]);
    первым элементом массива a будет массив, а вовсе не x

    Так что НУЖНО проще, см. первый коммент

    Comment by прохожий — 13.02.2009 @ 16:33

  4. проверка:
    var x = “hi”;
    var a = new Array([x]);
    alert(a[0] === x); //false
    alert(a[0][0] === x); //true

    Comment by прохожий — 13.02.2009 @ 16:36

  5. Прохожий, ваша правда, что-то я тупанул.

    Comment by Val Petruchek — 21.02.2009 @ 05:13

RSS feed for comments on this post. TrackBack URI

Leave a comment

  
Реклама::

 
Реклама::