Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2016, 18:07   #1
GeraEn
 
Регистрация: 11.05.2016
Сообщений: 3
По умолчанию Преобразование числа в объект на js

Здравствуйте уважаемые форумчане. Помогите зеленому решить задачку по js.
Задача такая: Написать функцию, преобразующую число в объект. Передавая на вход число от 0 до 999, мы должны получить на выходе объект, в котором в соответствующих свойствах описаны единицы, десятки и сотни. Например для числа 245 мы должны получить следующий объект: {‘единицы’: 5, ‘десятки’: 4, 'сотни’: 2}. Если число превышает 999, необходимо выдать соответствующее сообщение с помощью console.log и вернуть пустой объект.
Я вот, что написал
Код:
function numToObj() {
    var inputNumber = prompt('Введите число от 0 до 999'); // prompt превращает введенные данные в строку
    var arrNumber = inputNumber.split(''); // разбиваем строку на массив
    var objNumber = {}; // создаем объект, куда будем все складывать
    objNumber['сотни'] = +arrNumber[0]; // задаем ключам ->
    objNumber['десятки'] = +arrNumber[1]; // -> свойства из ->
    objNumber['единицы'] = +arrNumber[2]; // -> массива
    debugger;
    if (arrNumber.length == 3) { // если ввели 3 цифры, идем в конец
        return objNumber;
    }
    else if (arrNumber.length > 3) {
        delete objNumber.сотни;
        delete objNumber.десятки;
        delete objNumber.единицы;
        console.log("Ошибка! Вы ввели недопустимое кол-во символов"); // если ввели больше 3 цифр, то уведомление об ошибке
        return objNumber;
    }
    else (arrNumber.length < 3)  // если длина массива меньше 3, то -> 
        for (var i = 0; i < arrNumber.length; i++) { // -> запускаем цикл на добавление 0 в массив
            arrNumber.unshift(0); // добавляем 0 в начало массива
            if (arrNumber.length == 3) { // если длина равна 3 - выходим из цикла
                break;
            }
        }
        return objNumber; // 1
        // return arrNumber; // 2
    
    console.log(objNumber);
}
numToObj();
но у меня не работает нормально последнее условие, когда цифр меньше 3-х. В массив ноль добавляется в начало, но при // 1 - в объекте показываются введенные данные, а не с обновленного массива с нулем/нулями в начале, а при //2 - показывается массив вместо объекта. Помогите пожалуйста довести до ума.
GeraEn вне форума Ответить с цитированием
Старый 07.09.2016, 09:32   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Попробуйте так
Код:
function NumToObj(num)
{
    var arrNumber = num.split('');
    while (arrNumber.length < 3)
    {
    	arrNumber.unshift(0);
    }
    var objNumber = {};
    if (arrNumber.length > 3)
    {
    	return null;
    }
    else
    {
    	objNumber['сотни'] = +arrNumber[0]; 
    	objNumber['десятки'] = +arrNumber[1]; 
    	objNumber['единицы'] = +arrNumber[2];
        return objNumber;
    }
}
var number = prompt("Input number");
var obj = NumToObj(number);
if (obj == null)
{
	console.log("Object is null");
}
else
{
	//Здесь выводим нужное
}
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 07.09.2016, 16:22   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Код:
function Div( src ) {
    var keys = 'единицы десятки сотни'.split(' ');
    var src = (src+'')||'0';
    var div = src.split('');
    for (var i = keys.length, ln = div.length; i--;){
        this[keys[i]] = (+div[ln - 1 - i])||0;
    };
};
Код:
new Div(123)
>Div {сотни: 1, десятки: 2, единицы: 3}
new Div(23)
>Div {сотни: 0, десятки: 2, единицы: 3}
new Div()
>Div {сотни: 0, десятки: 0, единицы: 0}
new Div(1)
>Div {сотни: 0, десятки: 0, единицы: 1}
new Div(13231)
>Div {сотни: 2, десятки: 3, единицы: 1}
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 08.09.2016, 19:51   #4
GeraEn
 
Регистрация: 11.05.2016
Сообщений: 3
По умолчанию

Спасибо вам за ответы и помощь!
GeraEn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование часов в числа, а так же преобразование время PeMeHb Microsoft Office Excel 5 19.10.2014 17:04
Преобразование числа Dmitry_Web Помощь студентам 1 10.08.2012 18:44
Преобразование строки в об объект Anubys Общие вопросы C/C++ 8 26.12.2011 10:52
преобразование числа Dim_Ka Помощь студентам 0 28.05.2011 11:32
Преобразование числа в символ AndreyK C++ Builder 6 02.05.2010 17:38