Разбор строки JavaScript - PullRequest
1 голос
/ 14 июля 2009

У меня есть

   var checkBox = e.target;

    var tableRow = checkBox.parentNode.parentNode;
    var key = tableRow.attributes["key"];
    var aKey = key.nodeValue;

в этот момент aKey = "[123]"

Какой лучший способ вернуть 123 в виде int в javascript? обратите внимание, что aKey также может быть "[5555555555555555555]", поэтому я не могу просто взять символы 2-4. Мне нужно что-то более динамичное. Я надеялся, что это может быть проанализировано как массив из одного элемента, но я вижу, что это неправильно. Это действительно ключ данных для сетки Infragisitcs. Их поддержка не очень полезна.

Спасибо за любой совет.

Ура, ~ ck в Сан-Диего

Ответы [ 4 ]

3 голосов
/ 14 июля 2009

Пока ваш ключ помещается в целое число без переполнения, вы можете сделать

numericKey = parseInt(aKey.substr(1, aKey.length - 2))
2 голосов
/ 14 июля 2009

Я думаю, что если он всегда в этом формате, вы можете спокойно использовать eval(), чтобы превратить его в массив и получить первый элемент.

var aKey = eval( key.nodeValue );
var nKey = aKey[0];
0 голосов
/ 14 июля 2009

Ваш пример 5555555555555555555 превышает наибольшее «целое число», которое может быть надежно сохранено в JavaScript-формате IEEE-754 с двойной точностью с плавающей запятой, который равен 9007199254740992. Надеюсь, вы только что сделали это безумное большое число, и ваши целые числа не получаются почти такой большой.

Если вы действительно получаете такие большие числа, вам может потребоваться сохранить свой номер в строке, разбить большие числа на несколько частей или использовать библиотеку bigint .

0 голосов
/ 14 июля 2009

1001 * включают *

<script src="http://json.org/json2.js"></script>

Который даст вам объект JSON в браузере, у которого его нет, но при его использовании будет использоваться реализация браузера.

Тогда

JSON.parse(aKey);

Что даст вам массив.

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