Ответы пользователя по тегу JavaScript
  • Как вам такое решение задачки?

    GBreazz
    @GBreazz
    Вопрос автору, где такие задачи задают?
    Мой код, решение универсальное работает с повторениями. По классике
    function range (a) {
        if (a.length < 2) return a
        a.sort( (a, b) => a-b )
        let pred = null
        let e = false
        let result = ''
        for (let i of a) {    
            if (pred === null) {  
                result = pred = i
                continue
            }
            if (i != pred+1 )  {
                e ? result += '-' + pred + ', ' + i : result += ', ' + i
                e = false
            } else e = true
            pred = i
        }
    if (e) result += '-' + pred 
    return result
    }
    
    console.log(range([1, 4, 5,  2, 3, 9, 8, 11, 0]))
    console.log(range([1, 4, 3, 2]))
    console.log(range([1, 4, 8]))

    Или так
    function range (a) {
        a.sort( (a, b) => a-b )
        a = [...a,'']
        return a.reduce((st, item, i, arr) => i==0 ? st += item : ( item != arr[i-1]+1  ) ? st += '-' + arr[i-1] + ', ' + item :  st = st, '')
                .split(',')
                .map((item) => (eval(item) == 0 ? item.slice(0, item.indexOf('-')) : item).trim())
                .slice(0, -1)
                .join(', ')
      
    }
    
    console.log(range([1, 4, 5,  2, 3, 9, 8, 11, 0]))
    console.log(range([1, 4, 3, 2]))
    console.log(range([1, 4, 8]))

    И для полной идиоматичности сделаем так
    const range = a => [...a.sort( (a, b) => a-b ),''].reduce((st, item, i, arr) => i==0 ? st += item : ( item != arr[i-1]+1  ) ? st += '-' + arr[i-1] + ', ' + item :  st = st, '')
                                                      .split(',')
                                                      .map((item) => (eval(item) == 0 ? item.slice(0, item.indexOf('-')) : item).trim())
                                                      .slice(0, -1)
                                                      .join(', ')
    
    console.log(range([1, 4, 5,  2, 3, 9, 8, 11, 0]))
    console.log(range([1, 4, 3, 2]))
    console.log(range([1, 4, 8]))
    Ответ написан
  • Как заменить символы переноса строки?

    GBreazz
    @GBreazz
    Чтобы заменить все совпадения, нужно использовать для поиска не строку "-", а регулярное выражение /-/g, причём обязательно с флагом g:

    https://learn.javascript.ru/regexp-methods
    Ответ написан
    Комментировать
  • Как создать картинку из блока div?

    GBreazz
    @GBreazz
    Никак ты не создашь скриншот посредством PHP. Так как твой див нужно отрендерить браузерным движком. Такое можно сделать, гуглить PhantomJS (проект закрыт) и Headless Chrom.

    Как работает Headless Chrome
    Ответ написан