2014-09-12 4 views
0

У меня возникла особая проблема. Для моего REST API мне нужно проверить, что номер мобильного телефона - 10 цифр. Но когда я JSON.stringify он показывает длину как 12.Увеличивает ли JSON.stringify длину строки?

var num = req.body.phone; 
    console.log(num); 
console.log((JSON.stringify(num)).length); 
    console.log((JSON.stringify(num)).length==10); 

Выход:

1111111111 
12 
10 
+0

Что такое 'typeof num'? – Bergi

ответ

3

Не используйте JSON.stringify для преобразования числа в строку. Просто добавьте пустую строку вместо:

var num = 1234, 
    str = num + ''; 
console.log(str, str.length); // "1234", 4 

Или, если вы предпочитаете использовать .toString():

var num = 1234, 
    str = num.toString(); 
console.log(str, str.length); // "1234", 4 

Или:

var str = String(1234); 
console.log(str, str.length); // "1234", 4 

Чтобы ответить на этот вопрос в заголовке:
JSON.stringifyn ot добавлять специальные символы при вызове номера. Он просто преобразует число в строку:

var str = JSON.stringify(1234); 
console.log(str, str.length); // "1234", 4 

У вас, вероятно, есть лишние символы на вашем входе, которые вам не хватает. Или, скорее всего, ввод stringify -ing уже есть a string. В этом случае, это добавляет дополнительный набор цитат:

var str = JSON.stringify("1234"); 
console.log(str, str.length); // ""1234"", 6 
+1

Или, если хотите, просто используйте 'str = String (num)' – Bergi

+0

@Bergi: Я не думал об этом, отредактировал бы его. Спасибо! – Cerbrus

0

То, что вы на самом деле doint должен stingify строку. В вашей форме поле ввода содержит значение как строку, а не как целое число. Так что, если ваша стоимость телефона примерно равна "123", а не 123.

Что делает JSON.stringify в настоящее время, это упаковать «123» в строку "". Результатом этого является теперь: ""123""

Смежные вопросы