Ответы пользователя по тегу JavaScript
  • Что нужно сделать в задаче? Что значит выпирающие точки?

    alexbuki
    @alexbuki Автор вопроса
    программист js
    Решение, которое прошло все тесты:
    function solve ({ A, K }) {  
        if (K === 0) return A.reduce((a, b) => a + b, 0);  
        A.sort((a,b) => b - a)
        for (i =0; K > 0; i++, K--) {
            if (A[i] > 0) {
                A[i] = -A[i]
            } else {
                break
            }
        }
        A.sort((a,b) => b - a)
        if (K%2 === 1) {
            A[0] = -A[0]
        }
        return A.reduce((a, b) => a + b, 0)
    }
    Ответ написан
    Комментировать
  • Почему код не проходит тест в Яндекс.Контест?

    alexbuki
    @alexbuki
    программист js
    У вас не разобран случай, когда число может состоять из единиц. Также судя по условиям цикл нужно начинать со второй строки. Первая строка - это количество элементов(строк) в массиве.

    Мое решение:

    const readline = require('readline')
    const rl = readline.createInterface({
      input: process.stdin
    })
    const lines = []
    let counter = 0
    let maxcounter = 0
    rl.on('line', (line) => {
      lines.push(line)
    }).on('close', () => {
      for (let i = 1; i < lines.length; i++) {
        if (/^[1]+$/.test(lines[i])) {
          counter = lines[i].length + counter
        } else {
          if (maxcounter < counter) {
            maxcounter = counter
          }
          counter = 0
        }
      }
      if (maxcounter < counter) {
        maxcounter = counter
      }
      process.stdout.write(maxcounter.toString())
    })
    Ответ написан
    Комментировать
  • Как получить самый последний самый вложенный элемент?

    alexbuki
    @alexbuki
    программист js
    Используйте рекурсию, обходите все children у div
    const mainDiv = document.getElementsByTagName('div')
        let lastDiv
        const finLastDiv = (el) => {
            if(el.children[el.children.length - 1]) {
               finLastDiv(el.children[el.children.length - 1])
            }
            else {
              lastDiv = el
            }
        }
        finLastDiv(mainDiv[0])
        console.log(lastDiv)
        console.log(lastDiv.innerHTML) // => 2

    смотрите console
    Ответ написан
    Комментировать
  • Как найти ошибку?

    alexbuki
    @alexbuki Автор вопроса
    программист js
    разобрался:
    должно быть так:
    function promisify (api) {
      const promisedApi = {}
      for (const prop in api) {
        if (typeof (api[prop]) === 'function') {
          let loadScriptPromise = function (src) {
            return new Promise((resolve, reject) => {
              api[prop]((err, script) => {
                if (err) reject(err)
                else resolve(script);
              }, src);
            })
          }
          promisedApi[prop] = loadScriptPromise
        } else if (Object.keys(api[prop]).length > 0) {
          promisedApi[prop] = promisify(api[prop])
        } else {
          promisedApi[prop] = api[prop]
        }
      }
      return promisedApi
    };


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

    alexbuki
    @alexbuki Автор вопроса
    программист js
    https://habr.com/en/company/jugru/blog/428628/
    Может кому-то интересно, в статье много полезного для решения данной задачи.
    Ответ написан
    Комментировать
  • Как соеденить 2 массива?

    alexbuki
    @alexbuki
    программист js
    Как вариант соберите оба, потом ненужные элементы удалите.

    const third = second.concat(first);
    third.forEach((item,i)=>{
    if (!item.value || item.value == '' ) {
    third.splice(i,1);
    }
    });

    Либо, можно пробежаться по обоим массивам, добавляя в третии только нужные элементы
    Какое условие создания третьего массива не совсем понятно
    Ответ написан
    Комментировать
  • Что подразумевается под реафкторингом кода на js и насколько правильно я его сделал для предлагаемого кода?

    alexbuki
    @alexbuki Автор вопроса
    программист js
    С учетом замечаний
    class Journal {
      constructor(date) {
        this.date = date;
      }
    
      formatDate(date) {
        return `${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()}`;
      }
    
      get title() {
        return `Выпуск от ${this.formatDate(this.date)}`;
      }
    }
    Journal.compare = (journalA, journalB) => journalA.date - journalB.date;
    Journal.min = (journals) => {
      let min = 0;
      for (let i = 0; i < journals.length; i++) {
        if (Journal.compare(journals[min], journals[i]) > 0) min = i;
      }
      return journals[min];
    };
    
    const journals = [
      new Journal(new Date(2012, 1, 1)),
      new Journal(new Date(2012, 0, 1)),
      new Journal(new Date(2011, 11, 1)),
    ];
    
    const minJournal = Journal.min(journals);
    const { title } = minJournal;
    Ответ написан
    Комментировать