Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: JavaScript: присовению элементу массива строкового значения...  (Прочитано 14146 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« : 26-03-2007 15:33 » new

Снова я со своими дурацкими вопросами)
На сей раз – как присвоить элементу массива строковую переменную?

К примеру, вот пробую так

Код:
if(isNaN(ar[aa][bb])){ar[aa][bb]=”-”;}

При выводе у меня все равно место «-» печатается NaN. А если вот место черточки поставить нуль в присвоение, или другое число – то будет выводиться оно.
Мне, в общем, нужно, чтобы место NaN выводились прочерки.
Заранее спасибо
« Последнее редактирование: 26-03-2007 16:38 от Razor » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-03-2007 15:40 » 

Razor, весь код, касающийся этой строчки, в студию: объявление, создание массива, заполнение.
В общем то, лучше весь код, т.к. сдается мне, что ты после этой строчки выполнил арифметическую операцию...
Код оборачивай тегом code!!!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 26-03-2007 16:37 » 

RXL, каюсь...против опыта не попрешь )
Да, действительно, математическую операцию выполнял потом (округление при выводе результатов)
теперь сделал так:
Код:
if(isNaN(ar[i][j])){ar[i][j]="-";document.write('<td width="30" align="center">'+ar[i][j]+'</td>');}
else{document.write('<td width="30" align="center">'+Math.round(ar[i][j])+'</td>');}

прошу прощения за такую ошибку. не внимательный я( сам виноват(
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 26-03-2007 20:25 » 

Razor, это самая обычная логика...
Присвоение строковой константы автоматически создает объект типа String, а метод toString() (есть у каждого объекта) выдает NaN для объекта типа Number, если он содержит недействительное число. Сам по себе отъект сменить тип не может...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 26-03-2007 20:48 » 

RXL, ну объетом в данном случае является массив.?
а насчет сменить тип не может - это как? вплане вот я создал объект числового типа, и он уже не сможет сменить тип на строковый, при помощи тойже toString()? Но меняет ведь... или я чего-то недопонимаю опять
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 26-03-2007 21:26 » 

Razor, массив то объект, но массив содержит список скаляров - т.е. других объектов. Ты же работаешь с элементом массива, а не с массивом.

Последнее верно.

Код: (Javascript)
var a; // значение null - типа нет

a = "1234"; // тип String

var b = 1 + a;
// a - String; выражение (1 + a) возвращает объект типа Number, след. b - Number, но a не изменилось!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 27-03-2007 08:37 » 

RXL, а..ну это понятно, ну а если b обработать методом toString() после присвоения ему =1+а, то оно будет не Number уже а String ведь?
А без методов разных тип объекта каким был таким и останется, я правильно понял?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 28-03-2007 05:46 » 

Razor, нет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 28-03-2007 15:05 » 

RXL, тогда, если присвоить к примреу переменной С обработанную методом toString(); переменную b, то С будет строка, а b так и останется числового типа?
так?)
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 29-03-2007 17:38 » 

Razor, я фигею... Откуда такие выводы? Что значит "обработанная"? Документация для чего существует?

Метод toString() возвращает строку, но с самим объектом он ничего не делает. Тип объекта нельзя сменить. Можно переменной присвоить объект другого типа - ты видимо с этим путаешь.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 30-03-2007 16:53 » 

RXL, обработанная..ну так..просто... смысл то понятен)

в общем понял я )понял)
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 30-03-2007 17:25 » 

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

Мне, к примеру, смысл сказаного тобой не понятен. Что значит "обработан"? Из человеческого языка следует, что "изменен", но указанный метод не изменяет объекта. Фигня получается...
Зато можно сказать: вызывается метод объекта. Согласись, что четко и недвусмысленно сказано!

Еще очень рекомендую сперва справиться в справочнике, что делает тот или иной метод или какие свойства есть у такого то типа. Если после этого будет не понятно - пиши - с удовольствие разберу вопрос на части.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines