Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2016, 21:02
Аватар для jano80
Новичок на форуме
Отправить личное сообщение для jano80 Посмотреть профиль Найти все сообщения от jano80
 
Регистрация: 09.02.2016
Сообщений: 5

Помогите написать функцию в Javascript
Добрый вечер всем! Ребята помогите, я новичок в Javascript. Вот такую задачу надо решить:

написать функцию
// Которая будет работать аналогично тому как работает метод .toLocaleString ( 'ru-RU ").
// При этом нельзя использовать сам .toLocaleString

var number = 17344235654.345
number.toLocaleString('ru-RU'); // "17 344 235 654,345"

Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2016, 21:13
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

https://github.com/willsp/polyfill-N...ocaleString.js
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2016, 21:31
Аватар для jano80
Новичок на форуме
Отправить личное сообщение для jano80 Посмотреть профиль Найти все сообщения от jano80
 
Регистрация: 09.02.2016
Сообщений: 5

Спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2016, 21:47
Аватар для jano80
Новичок на форуме
Отправить личное сообщение для jano80 Посмотреть профиль Найти все сообщения от jano80
 
Регистрация: 09.02.2016
Сообщений: 5

var number = 17344235654.345 - эту цифру в коде не буду использовать? Можете объяснить этот момент? Спасибо заранее! Я только что начинаю изучать Javascript.
Ответить с цитированием
  #5 (permalink)  
Старый 09.02.2016, 22:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,084

jano80,
непонятно что вы спросили?
Ответить с цитированием
  #6 (permalink)  
Старый 09.02.2016, 22:15
Аватар для jano80
Новичок на форуме
Отправить личное сообщение для jano80 Посмотреть профиль Найти все сообщения от jano80
 
Регистрация: 09.02.2016
Сообщений: 5

Файл который вы прислали там что нибудь надо поменять?
Ответить с цитированием
  #7 (permalink)  
Старый 09.02.2016, 22:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,084

Сообщение от jano80
Файл который вы прислали там что нибудь надо поменять?
ничего там менять не надо
var number = 17344235654.345;
      // polyfill.number.toLocaleDateString
/*jshint sub:true*/

(function() {
    'use strict';

    // Got this from MDN:
    // [url]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Example:_Checking_for_support_for_locales_and_options_arguments[/url]
    function toLocaleStringSupportsLocales() {
        var number = 0;
        try {
            number.toLocaleString("i");
        } catch (e) {
            return e.name === "RangeError";
        }
        return false;
    }

    if (!toLocaleStringSupportsLocales()) {
        var replaceSeparators = function(sNum, separators) {
            var sNumParts = sNum.split('.');
            if (separators && separators.thousands) {
                sNumParts[0] = sNumParts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + separators.thousands);
            }
            sNum = sNumParts.join(separators.decimal);

            return sNum;
        };

        var renderFormat = function(template, props) {
            for (var prop in props) {
                template = template.replace("{{" + prop + "}}", props[prop]);
            }

            return template;
        };

        var mapMatch = function(map, locale) {
            var match = locale;
            var language = locale && locale.toLowerCase().match(/^\w+/);

            if (!map.hasOwnProperty(locale)) {
                if (map.hasOwnProperty(language)) {
                    match = language;
                } else {
                    match = "en";
                }
            }

            return map[match];
        };

        var dotThousCommaDec = function(sNum) {
            var separators = {
                decimal: ',',
                thousands: '.'
            };

            return replaceSeparators(sNum, separators);
        };

        var commaThousDotDec = function(sNum) {
            var separators = {
                decimal: '.',
                thousands: ','
            };

            return replaceSeparators(sNum, separators);
        };

        var spaceThousCommaDec = function(sNum) {
            var seperators = {
                decimal: ',',
                thousands: '\u00A0'
            };

            return replaceSeparators(sNum, seperators);
        };

        var transformForLocale = {
            en: commaThousDotDec,
            it: dotThousCommaDec,
            fr: spaceThousCommaDec,
            de: dotThousCommaDec,
            "de-DE": dotThousCommaDec,
            "de-AT": dotThousCommaDec,
            "de-CH": dotThousCommaDec,
            "de-LI": dotThousCommaDec,
            "de-BE": dotThousCommaDec,
            ro: dotThousCommaDec,
            "ro-RO": dotThousCommaDec,
            hu: spaceThousCommaDec,
            "hu-HU": spaceThousCommaDec
        };

        var currencyFormatMap = {
            en: "pre",
            it: "post",
            fr: "post",
            de: "post",
            "de-DE": "post",
            "de-AT": "prespace",
            "de-CH": "prespace",
            "de-LI": "post",
            "de-BE": "post",
            ro: "post",
            "ro-RO": "post",
            hu: "post",
            "hu-HU": "post"
        };

        var currencySymbols = {
            "eur": "€",
            "usd": "$",
            "ron": "RON",
            "krw": "₩",
            "jpy": "¥",
            "huf": "HUF"
        };

        var currencyFormats = {
            pre: "{{code}}{{num}}",
            post: "{{num}} {{code}}",
            prespace: "{{code}} {{num}}"
        };

        Number.prototype.toLocaleString = function(locale, options) {
            if (locale && locale.length < 2)
                throw new RangeError("Invalid language tag: " + locale);

            var sNum;

            if (options && options.minimumFractionDigits) {
                sNum = this.toFixed(options.minimumFractionDigits);
            } else {
                sNum = this.toString();
            }

            sNum = mapMatch(transformForLocale, locale)(sNum, options);

            if(options && options.currency && options.style === "currency") {
                var format = currencyFormats[mapMatch(currencyFormatMap, locale)];
                if(options.currencyDisplay === "code") {
                    sNum = renderFormat(format, {
                        num: sNum,
                        code: options.currency.toUpperCase()
                    });
                } else {
                    sNum = renderFormat(format, {
                        num: sNum,
                        code: currencySymbols[options.currency.toLowerCase()]
                    });
                }
            }

            return sNum;
        };
    }

}());
alert(number.toLocaleString('ru-RU'));
Ответить с цитированием
  #8 (permalink)  
Старый 09.02.2016, 22:26
Аватар для jano80
Новичок на форуме
Отправить личное сообщение для jano80 Посмотреть профиль Найти все сообщения от jano80
 
Регистрация: 09.02.2016
Сообщений: 5

Спасибо большое
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ДОБРОЕ ДЕЛО. ПОМОГИТЕ НАПИСАТЬ СКРИПТ, САМ 0% САЙТ ДЛЯ ИНВАЛИДОВ Алексей777555 Общие вопросы Javascript 3 11.06.2015 15:49
Необходимо написать 7 страничый сайт с небольшйо частью javascript condpattern Работа 5 05.08.2014 13:26
Помогите подключить функцию в onclick moloko Элементы интерфейса 10 30.07.2013 08:27
Как написать алгоритм выборки в javascript? Isaac Общие вопросы Javascript 13 06.02.2013 11:15
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05