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

    TRen208
    @TRen208
    const array = [
        { type: 'type-1', value: 5 },
        { type: 'type-1', value: 7 },
        { type: 'type-2', value: 3 },
        { type: 'type-3', value: 5 },
        { type: 'type-4', value: 5 },
        { type: 'type-1', value: 88 }
    ];
    const result = [];
    
    for (let o of array) {
        let obj = result.find(_o => _o.type == o.type);
        if (!obj) obj = { type: o.type, data: [] }, result.push(obj);
        obj.data.push({ type: o.type, value: o.value });
    }
    
    console.log(result);
    Ответ написан
    Комментировать
  • Как правильно дублировать блок в HTML\CSS\JS?

    TRen208
    @TRen208
    В JS пример есть такой код
    var dropdown = $('.dropdown');
    var item = $('.item');
    
    item.on('click', function() {
      item.toggleClass('collapse');
      
      if (dropdown.hasClass('dropped')) {
        dropdown.toggleClass('dropped');
      } else {
        setTimeout(function() {
          dropdown.toggleClass('dropped');
        }, 150);
      }
    })

    То есть, при нажатии на один блок, открываются все. нужно его заменить на этот, должно сработать)

    const dropdown = $('.dropdown');
    
    dropdown.on('click', function() {
      $(this).children(".item").toggleClass('collapse');
      
      if ($(this).hasClass('dropped')) {
        $(this).toggleClass('dropped');
      } else {
          $(this).toggleClass('dropped');
      }
    })



    В чем была ошибка?
    Потому что этот код
    var dropdown = $('.dropdown');
    var item = $('.item');

    Содержит все список элементов с такими классами, а здесь:
    item.toggleClass('collapse');
      
      if (dropdown.hasClass('dropped')) {
        dropdown.toggleClass('dropped');
      } else {
        setTimeout(function() {
          dropdown.toggleClass('dropped');
        }, 150);
      }

    При нажатии все элементы из этого списка изменяются. Поэтому нужно использовать $(this) что-бы получить именно тот элемент, который был нажат.
    Ответ написан
    3 комментария
  • Как сделать перенос строки в функции alert JS?

    TRen208
    @TRen208
    alert(`Hello
    World!`);
    alert(`Hello\nWorld!`);

    609fead6e267b511876750.png

    И код я бы реализовал так:
    let ammountOfMoney = prompt('Write amount of money');
    if (!ammountOfMoney || ammountOfMoney < 1000) alert('Invalid input data');
    
    let numberOfYears = prompt('Write number of years');
    if (!numberOfYears || numberOfYears < 1) alert('Invalid input data');
    
    let percentageOfYear = prompt('deposit interest?');
    if (!percentageOfYear || percentageOfYear > 100)  alert('Invalid input data');
    
    
    alert(`Initial amount: ${ammountOfMoney} \nNumber of years: ${numberOfYears}\nPercentage: ${percentageOfYear}`);
    Ответ написан
    4 комментария