Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JSON спецсимволы в имени ключа (https://javascript.ru/forum/misc/33672-json-specsimvoly-v-imeni-klyucha.html)

psixojoker 02.12.2012 23:20

JSON спецсимволы в имени ключа
 
Объявляю объект таким образом:

var db={
"2|0":"5.3",
"1|1":"22.7"
};


Далее мне необходимо получать значения по ключу и кое-что математически с ними делать. Не работает. Выдает NAN.
Я подозреваю, что нельзя использовать цифры(спецсимволы) в названии ключа. Если это так, как бы это обойти по-проще?
Спасибо.

Hoshinokoe 03.12.2012 00:47

psixojoker,

Работает.
var db={
"2|0":"5.3",
"1|1":"22.7"
};
alert(db["2|0"]);  // 5.3
alert(db["1|1"]);  // 22.7

А выдает NAN потому что вы объявляете строки, а не числа.
var obj = {
 "prop1": "5.3", //если так объявить, то это строка
 "prop2": 5.3   //а это уже число
};

Если нужно преобразовать сторку в число, то используйте методы: parseFloat и parseInt.

psixojoker 03.12.2012 01:23

Я наверное не совсем корректно сформулировал.

Основная проблема в том, что значение нужного мне ключа, находится в другой переменной.

var a="2|0";
var data=db[a];


Так вот data - имеет тип undefined.

NoResponse 03.12.2012 01:59

гониш

var db={
"2|0":"5.3",
"1|1":"22.7"
};
var a="2|0";
var b="1|1";
alert(db[a]);
alert(db[b]);


проблема скорее в переменной с ключом или там где ты оный формируешь

psixojoker 03.12.2012 02:33

хммм..возможно действительно, я как-то не так формирую эту переменную?

a=$(this).attr('name').match(/\d|\d/).toString();


через alert она отображается. однако вставляя её в виде ключа, получаю undefined.


Часовой пояс GMT +3, время: 05:40.