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

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    for (let i = 1; i < 10; i += 1) {
    	document.write(i.toString().repeat(i) + "<br>");
    }
    Ответ написан
    Комментировать
  • Что означает такая запись?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Это ассоциативный массив, хэш таблица, в JS просто называется объект.
    Ответ написан
    Комментировать
  • Какую лучше книгу начать читать новичку по JS Эрик Фримен, Элизабет Робсон или Макфарланд?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Если вы вообще ничего не знаете, то вам должно быть вообще без разницы что и как читать/смотреть. Самые основы можно получить из любого источника, пусть то будет книга, статьи, видео и т.д. Как будут получены основы, можно уже задуматься о выборе книги. И тут же вам никто не сможет посоветовать именно ту, которая подойдет для вас. У каждого уровень восприятия разный. Одному нравится красная книга, второму зеленая, а еще кому нибудь вообще не нравится читать и он смотрит только видео лекции. Выбор книги лежит только на вас. Берете любые доступные для вас книги, открываете и начинаете читать. Смотрите на изложение. Если вам все понятно и все нравится то продолжаете ее читать, если не нравится, берете другую и все повторяете, пока не найдете хорошую, именно для вас книгу.

    Лично мне нравятся следующие книги по основам JS:
    // Илья Кантор - http://learn.javascript.ru
    // Николас Закас - JavaScript для профессиональных веб-разработчиков
    Ответ написан
    Комментировать
  • Прототипы и наследование в JavaScript?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Дело не в наследовании, а в методе apply, написано же. Консоль откройте, прочекайте строку с ошибкой и скиньте тот кусок кода в котором используется apply
    Ответ написан
  • Как найти совпадения в массивах разной длинны?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    В данных примерах ответ будет содержать только уникальные значения совпадений. Если нужно отображать все, включая повторные совпадения одних и тех же значений, то смотрите решение выше

    let arr1 = ["Alex", "Nick", "John", "Sasha", "Bill", "Donald", "Pit"];
    let arr2 = ["Nick", "Bill", "Alex", "Masha", "Pasha", "Pit"];
    let obj = {};
    
    for (let i = 0; i < arr1.length; i += 1) {
    	for (let j = 0; j < arr2.length; j += 1) {
    		if (arr1[i] === arr2[j]) {
    			obj[arr1[i]] = true;
    		}
    	}
    }
    
    // Или так
    
    // for (let i = 0; i < arr1.length; i += 1) {
    // 	if (arr2.includes(arr1[i])) {
    //   	obj[arr1[i]] = true;
    //   }
    // }
    
    console.log(Object.keys(obj)); // ["Alex", "Nick", "Bill", "Pit"]
    Ответ написан
    Комментировать
  • Как найти учителя JS и Node.js?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Никто не будет тратить свое время на человека, который не способен обучаться. Тем более если бесплатно.
    Есть шанс что кто то все таки возьмется за вас, но только при перекрытии месячного оклада на работе. Никому не выгодно тратить свое время.
    Если вы не можете самостоятельно усвоить некоторый материал, то маловероятно что вам кто то сможет уложить материал в голову. Вероятнее всего вы выбрали не ту специализацию, так как у вас явно нет стимула сидеть и заниматься. Никакой преподаватель вас не научит программировать без ваших усилий. Вам так и так придется самостоятельно сидеть и перечитывать/пересматривать/анализировать тонны информации.
    Возможно вам стоит задуматься о другой специализации.

    PS. В общем то любой человек, не обладающий диффектами мозговой активности, при должном желании и усилии, сможет научиться всему чему угодно. Главное это упорство. Возможно с первого раза ничего не получается, со второго, с третьего...с двадцатого и т.д, но на 21 раз все получится. У всех скорость усвоения материала разная. Но в любом случае, при продолжительном непрерывном обучении, результат обязательно будет. Сидите и разбирайте материал, не понятно, перечитывайте, пересматривайте видео, ищите тоже самое в других источниках, и полюбому все получится. И обязательно практикуйтесь. Без практики, хоть зачитайтесь. В итоге вы большинство информации забудите, а с практикой, шанс усвоения увеличивается в разы.

    Удачи в обучении!
    Ответ написан
    5 комментариев
  • Функция сортировки в javascript, необходимо изменить правило ортировки?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    StationsSort.sort(function(s1,s2) {
     // some code
    })

    Это не функция. Функцией является сам метод sort(), которому можно передать функцию как параметр, которая будет указывать как сортировать элементы. А StationsSort является объектом который нужно отсортировать. И вызывается метод sort() в данном блоке кода, а не где то еще.

    Для примера:
    let arr = [5, 4, 7, 2, 1, 8, 6, 0];
    
    arr.sort((a, b) => {
    	if (a < b) {
      	return -1;
      } else if (a > b) {
      	return 1;
      } else {
      	return 0;
      }
    }); // [0, 1, 2, 4, 5, 6, 7, 8]


    PS. Для начала приведите код в нормальный вид, согласно какому нибудь code style. Сейчас же в вашем коде черт ногу сломит.
    Сделайте хотя бы так:
    $.get(URL + '/stations.json', function(data) {
      var j1 = 0;
    
      $.each(data, function(j1) {
        Stations[this.sindex] = this;
        StationsSort[j1] = this;
        
        j1++;
      });
    
      var date = new Date();
      dstmp = date.getTime();
    
      $.each(StationsSort, function() {
        lastMsg = Math.floor(dstmp / 1000) - this.last_at;
        style = '';
    
        if (lastMsg < 10800) {
          style = "style=\"background: #8affbb;\"";
        }
    
        StationsSort.sort(function(s1, s2) {
          if (s1.sindex > s2.sindex)
            return 1;
          if (s1.sindex < s2.sindex)
            return -1;
          else
            return 0;
        });
    
        $('#station-list').append("<div " + style + " class='st-btn' title='" + EncodeHTML(this.station_name) + "' onclick=\"StationProcess(this, '" + EncodeHTML(this.sindex) + "')\">" + EncodeHTML(this.sindex) + ' - ' + EncodeHTML(this.station_name) + "</div>");
      });
    });
    Ответ написан
    6 комментариев
  • Как правильно впихнуть данные в json?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    1. Распарсить данные с формы (JSON.parse())
    2. Распарсить прочите данные (JSON.parse())
    3. Создать объект и заполнить его полученными данными (let object = {})
    4. Преобразовать объект в JSON формат (JSON.stringify())
    Ответ написан
    Комментировать
  • Почему такое поведение js кода?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Во первых нужно более подробно и внятно объяснить в чем у вас проблема и четко поставить вопрос/вопросы.

    Во вторых научитесь не мешать иностранные слова то в одном виде то в другом. Вольный перевод и ваше написание иностранного слова может быть не понято другими пользователями данного сервиса, которые заинтересовались вашим вопросом и возможно хотели вам помочь.

    В третьих научитесь последовательно излагать ваши мысли и правильно ставить вопросы.
    Вопрос "Почему так происходит?" многим может быть не понятен. Что именно так происходит? То что вы "Делаете алгоритм трансформации", вам это не понятно почему так происходит?

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

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

    Решение вашей проблемы.
    Во первых let имеет ограниченную область видимости, и не гарантируется что объявленная переменная созданная в одном месте, будет видна в другом.
    Во вторых в случае если переменная controller будет равна 3, то case 2, будет являться недостижимым кодом, к сожалению интерпретатор JS не проверяет достижимость.
    В третьих вообще не понятно для чего вам необходимо функциям прописывать поля со значением.
    Ответ написан
  • На чём написан код и как его выполнить через консоль google chrome?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Во первых это формат JSON. Во вторых его можно выполнить в консоли, просто создав объект вида:
    let nameObj = ... // Содержимое вашего кода.
    Ответ написан
    Комментировать
  • Как избавиться от отступа справа?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Вы приложите код в песочнице, чтобы можно было наглядно ознакомиться с кодом и посмотреть в чем у вас проблема. Разработчики не экстрасенсы. По одной лишь фотографии мало чего насоветуют.

    UPD. Опять же, выставив это полотно кода вы ничего толком не изменили. Если вы хотите получить оперативный и адекватный ответ, лучше всего будет подобного рода вопросы, оформлять так чтобы прилагалась ссылка на песочницу с кодом, желательно с графическим отображением результата выполнения этого кода, чтобы наглядно можно было бы определить и указать на ошибку, в следствии чего решить вашу проблему.

    Оформляйте вопросы так чтобы это приносило пользу не только вам но и другим, хотя бы делайте удобное представление вашей проблемы, если данная проблема частная и возможно не поможет другим.
    Ответ написан
    Комментировать
  • Модификация массива, работает криво что делать?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Прошу прощения, но у вас отвратительный code style. Советую вам обратить внимание на это. Читать ваш код даже и не хочется. Следуйте одному стилю написания кода.

    Хотя бы вот так сделайте:
    var item_arr = new Array();
    
    request.on("row", function(columns) {
      if (0 == item_arr.length) {
        var items = new Array();
    
        items.push(columns[0].value);
        items.push(columns[1].value);
        items.push(columns[2].value);
        items.push(columns[3].value);
       
        if(columns[4].value == null){
          items.push(0);
        } else {
          items.push(columns[4].value);
        }
     
        item_arr.push(items);
      } else {
        for (var i = 0; i < item_arr.length; i += 1) {
          if (item_arr[i][0] == columns[0].value) {
            item_arr[i][4] = Number(item_arr[i][4]) + Number(columns[4].value);
            item_arr[i][3] = Number(item_arr[i][3]) + Number(columns[3].value);
          } else {
            var items = new Array();
    
            items.push(columns[0].value);
            items.push(columns[1].value);
            items.push(columns[2].value);
            items.push(columns[3].value);
     
            if(columns[4].value == null) {
              items.push(0);
            } else {
              items.push(columns[4].value);
            }
    
            item_arr.push(items);
        }
      }
    }
    Ответ написан
    Комментировать
  • Как сделать, чтобы при повторном клике на чекбокс оно не снимало с него галочки?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    <input type="checkbox" class="checkbox">

    let checkbox = document.querySelector(".checkbox");
    
    checkbox.addEventListener("click", (event) => {
    	if (checkbox.checked) {
      	event.preventDefault();
      } else {
      	checkbox.checked = true;
      }
    }, false);
    Ответ написан
    1 комментарий
  • Почему замыкание на javascript ведет себя таким образом?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Правильно так:
    function func() {
      var arr = [];
    
      for (var i = 0; i < 3; i++) {
        var tmp = (function(i) {
          return function() {
            console.log(i);
          };
        })(i);
    
        arr.push(tmp);
      }
    
      return arr;
    }
    
    var arr = func();
    
    arr[0]();
    arr[1]();
    arr[2]();


    Еще лучше так:
    let letFunc = () => {
    	let arr = [];
      
      for (let i = 0; i < 3; i++) {
      	arr.push(() => console.log(i));
      }
      
      return arr;
    }
    
    let letArr = letFunc();
    
    letArr[0]();
    letArr[1]();
    letArr[2]();
    Ответ написан
    Комментировать
  • Существуют ли библиотеки по построению эпюр на JavaScript?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Нарисуйте в векторе, потом импортируйте на страницу svg и все. зачем париться с canvas?
    Ответ написан
  • Как сгенерировать кнопки из списка?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Что то типа этого:
    var mylist = ["first", "second", "thrid", "fourth", "fifth"];
    
    for (var i = 0; i < mylist.length; i++) {
      var button = document.createElement("button");
      button.className = mylist[i];
      button.textContent = mylist[i];
    
      document.querySelector(".button-list").appendChild(button);
    }
    Ответ написан
    Комментировать
  • Почему мало FPS в HTML5 игре (движок Phaser)?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Дело в том что это не native, а сделанное через одно место портирование браузерного языка на мобильные платформы. Если используете JS, то не стоит ожидать чего то сверестественного и нормально работающего, тем более при 60 FPS.
    Да и тем более 4 ядра на телефоне != 4 ядрам на ПК. Производительности телефона не хватит запустить что либо более менее ощутимое по нагрузке.
    Ответ написан
    Комментировать