• JSONPath - - как вернуть объекты (ключи, значения) на 1-м и 3-м уровнях?

    oldTV
    @oldTV Автор вопроса
    Вот что значит написать правильный вопрос: разобрался сам, ответ: $.paths.*~
    Ответ написан
    Комментировать
  • Как удалить текст в ячейке после символа?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вот, надеюсь, понятный способ:
    const nodes = [ ...document.querySelector('td').childNodes ];
    const index = nodes.findIndex(({ nodeName }) => nodeName === 'BR');
    if (index > -1) nodes[index + 1].remove();
    Находим все узлы DOM внутри td. Их будет 3:
    1. текстовый
    2. элемент BR
    3. и опять текстовый

    Следующий узел после найденного BR — удаляем.
    Ответ написан
    Комментировать
  • Как придать div вот такую форму?

    black1277
    @black1277
    Вольный стрелок
    Вот накидал по быстрому для примера

    Этот способ удобен тем, что можно сделать край любой формы, в зависимости от того какой svg использовать. Недостаток в том, что бордер можно только через drop-shadow сделать.
    Ответ написан
    4 комментария
  • HTML тэг чтобы открыть папку в линуксе?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Это называется не тэг, а URI scheme. На странице описания есть и примеры использования этой scheme, в том числе и в UNIX-like.
    Ответ написан
    1 комментарий
  • Как спрятать ключ от API чтоб работал github pages?

    @bqio
    https://bqio.github.io/
    Для хранения секретных ключей используется сервер, либо environment variables.

    Как пример, dotenv
    Ответ написан
    Комментировать
  • Как найти самое часто встречаемое число в массиве?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const mostFrequentNum = Array
      .from(arr.reduce((acc, n) => acc.set(n, -~acc.get(n)), new Map))
      .reduce((max, n) => max[1] > n[1] ? max : n, [ , 0 ])
      .at(0);

    или

    const mostFrequentNum = Object
      .entries(arr.reduce((acc, n) => (acc[n] = (acc[n] ?? 0) + 1, acc), {}))
      .reduce((acc, n) => (acc[n[1]] = +n[0], acc), [])
      .pop();
    Ответ написан
    2 комментария
  • Как импортировать зависимость из другой зависимости?

    @its2easyy
    Во-первых, это неудобно, зачем 2 раза устанавливать один и тот же пакет.

    Если npm может выбрать версию которая одновременно подойдёт и для проекта и для пакета, то зависимость будет установлена только один раз.
    если зависимость #2 внутри #1 обновится, мне также придется ее обновлять во избежание конфликтов версий

    в проекте ^2.3.4, в зависимости стало ^2.4.0, npm установит 2.4.0 потому что она подходит под оба условия, в проекте версию можно не трогать. Обновлять нужно будет только мажорные версии потому что они предполагают breaking changes.
    Вопрос: зачем?

    Вы не контролируете состав зависимостей в пакете, поэтому нет гарантии что эта вложенная зависимость там останется даже после обновления минорной версии, а если она пропадёт то импорт из node_modules выдаст ошибку.
    Ответ написан
    1 комментарий
  • Почему ref здесь не реактивен?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Не выдумывайте, всё реактивно. Просто вы заменяете массив в хранилище (мутация remove) - после этого в хранилище у вас одни данные, а рендер вы выполняете на основе других.
    Ответ написан
    7 комментариев
  • Почему тут TypeError у map?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    А зачем там str и что вы имели ввиду, написав это?
    Просто уберите.

    function camelize(str) {
        return str
            .split('-')
            .map(function(word, index) {
                if (index == 0) {
                    return word;
                } else {
                    return word[0].toUpperCase() + word.slice(1);
                }
            })
            .join('')
    }
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));


    Можно и покороче

    function camelize(str) {
        return str
            .split('-')
            .map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1))
            .join('')
    }
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));


    const upper = (word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1);
    function camelize(str) {
        return str
            .split('-')
            .map(upper)
            .join('')
    }
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));


    const upper = (word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1);
    const camelize = str => str.split('-').map(upper).join('');
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));
    Ответ написан
    1 комментарий
  • Как справить вывод кода в VS Code?

    black1277
    @black1277
    Вольный стрелок
    Идёте в настройки, выбираете пункт Расширения, ищите название Rune Code configuration и в правой панельке ищете опцию Show Execution Message и снимаете с неё галочку. Всё!
    Ответ написан
    2 комментария
  • Где можно взять массив стран на русском для javascript?

    webanet
    @webanet
    var c = [
        'Афганистан',
        'Албания',
        'Антарктика',
        'Алжир',
        'Американское Самоа',
        'Андора',
        'Ангола',
        'Антигуа и Барбуда',
        'Азербайджан',
        'Аргентина',
        'Австралия',
        'Австрия',
        'Багамские Острова',
        'Бахрейн',
        'Бангладеш',
        'Армения',
        'Барбадос',
        'Бельгия',
        'Бермудские Острова',
        'Бутан',
        'Боливия',
        'Босния и Герцеговина',
        'Ботсвана',
        'Остров Буве',
        'Бразилия',
        'Белиз',
        'Британская территория в Индийском океане',
        'Соломоновы Острова',
        'Британские Виргинские острова',
        'Бруней',
        'Болгария',
        'Мьянма',
        'Бурунди',
        'Белоруссия',
        'Камбоджа',
        'Камерун',
        'Канада',
        'Кабо-Верде',
        'Каймановы острова',
        'Центральноафриканская Республика',
        'Шри-Ланка',
        'Чад',
        'Чили',
        'Китайская Народная Республика',
        'Остров Рождества',
        'Кокосовые острова',
        'Колумбия',
        'Коморы',
        'Майотта',
        'Республика Конго',
        'Демократическая Республика Конго',
        'Острова Кука',
        'Коста-Рика',
        'Хорватия',
        'Куба',
        'Кипр',
        'Чехия',
        'Бенин',
        'Дания',
        'Доминика',
        'Доминиканская Республика',
        'Эквадор',
        'Сальвадор',
        'Экваториальная Гвинея',
        'Эфиопия',
        'Эритрея',
        'Эстония',
        'Фарерские острова',
        'Фолклендские острова',
        'Южная Георгия и Южные Сандвичевы острова',
        'Фиджи',
        'Финляндия',
        'Аландские острова',
        'Франция',
        'Французская Гвиана',
        'Французская Полинезия',
        'Французские Южные и Антарктические территории',
        'Джибути',
        'Габон',
        'Грузия',
        'Гамбия',
        'Палестина',
        'Германия',
        'Гана',
        'Гибралтар',
        'Кирибати',
        'Греция',
        'Гренландия',
        'Гренада',
        'Гваделупа',
        'Гуам',
        'Гватемала',
        'Гвинея',
        'Гайана',
        'Республика Гаити',
        'Остров Херд и острова Макдональд',
        'Ватикан',
        'Гондурас',
        'Гонконг',
        'Венгрия',
        'Исландия',
        'Индия',
        'Индонезия',
        'Иран',
        'Ирак',
        'Ирландия',
        'Израиль',
        'Италия',
        'Кот-д’Ивуар',
        'Ямайка',
        'Япония',
        'Казахстан',
        'Иордания',
        'Кения',
        'КНДР',
        'Республика Корея',
        'Кувейт',
        'Киргизия',
        'Лаос',
        'Ливан',
        'Лесото',
        'Латвия',
        'Либерия',
        'Ливия',
        'Лихтенштейн',
        'Литва',
        'Люксембург',
        'Макао',
        'Мадагаскар',
        'Малави',
        'Малайзия',
        'Мальдивы',
        'Мали',
        'Мальта',
        'Мартиника',
        'Мавритания',
        'Маврикий',
        'Мексика',
        'Монако',
        'Монголия',
        'Молдавия',
        'Черногория',
        'Монтсеррат',
        'Марокко',
        'Мозамбик',
        'Оман',
        'Намибия',
        'Науру',
        'Непал',
        'Нидерланды',
        'Кюрасао',
        'Аруба',
        'Синт-Мартен',
        'Бонэйр, Синт-Эстатиус и Саба',
        'Новая Каледония',
        'Вануату',
        'Новая Зеландия',
        'Никарагуа',
        'Нигер',
        'Нигерия',
        'Ниуэ',
        'Норфолк',
        'Норвегия',
        'Северные Марианские острова',
        'Внешние малые острова США',
        'Микронезия',
        'Маршалловы Острова',
        'Палау',
        'Пакистан',
        'Панама',
        'Папуа — Новая Гвинея',
        'Парагвай',
        'Перу',
        'Филиппины',
        'Острова Питкэрн',
        'Польша',
        'Португалия',
        'Гвинея-Бисау',
        'Восточный Тимор',
        'Пуэрто-Рико',
        'Катар',
        'Реюньон',
        'Румыния',
        'Россия',
        'Руанда',
        'Сен-Бартелеми',
        'Острова Святой Елены, Вознесения и Тристан-да-Кунья',
        'Сент-Китс и Невис',
        'Ангилья',
        'Сент-Люсия',
        'Сен-Мартен (Франция)',
        'Сен-Пьер и Микелон',
        'Сент-Винсент и Гренадины',
        'Сан-Марино',
        'Сан-Томе и Принсипи',
        'Саудовская Аравия',
        'Сенегал',
        'Сербия',
        'Сейшельские Острова',
        'Сьерра-Леоне',
        'Сингапур',
        'Словакия',
        'Словения',
        'Сомали',
        'Южно-Африканская Республика',
        'Зимбабве',
        'Испания',
        'Южный Судан',
        'Судан',
        'Западная Сахара',
        'Суринам',
        'Шпицберген и Ян-Майен',
        'Свазиленд',
        'Швеция',
        'Швейцария',
        'Сирия',
        'Таджикистан',
        'Таиланд',
        'Того',
        'Токелау',
        'Тонга',
        'Тринидад и Тобаго',
        'Объединённые Арабские Эмираты',
        'Тунис',
        'Турция',
        'Туркмения',
        'Теркс и Кайкос',
        'Тувалу',
        'Уганда',
        'Украина',
        'Республика Македония',
        'Египет',
        'Великобритания',
        'Гернси',
        'Джерси',
        'Остров Мэн',
        'Танзания',
        'Соединённые Штаты Америки',
        'Виргинские Острова',
        'Буркина-Фасо',
        'Уругвай',
        'Узбекистан',
        'Венесуэла',
        'Уоллис и Футуна',
        'Самоа',
        'Йемен',
        'Замбия',
    ];
    Ответ написан
    2 комментария
  • Как экранированить грамотно csv?

    iMedved2009
    @iMedved2009
    Не люблю людей
    (?:^"|;")(""|[\w\W]*?)(?=";|"$)|(?:^(?!")|;(?!"))([^;]*?)(?=$|;)|(\r\n|\n)

    https://regex101.com/r/EeOjHs/1
    Ответ написан
    4 комментария
  • Что происходит в этом цикле?

    black1277
    @black1277
    Вольный стрелок
    // создаем стрелочную функцию, принимающую два параметра
    const countChars = (str, char) => {
    	// создаем переменные и присваиваим им значение 0
    	let i = 0;
    	let count = 0;
    	// запускаем цикл с предусловием
    	while (i < str.length) { // пока i меньше чем длина строки str
    		// исполняем тело цикла
    
    		// берем символ из строки str расположенный по индексу i и переводим в нижний регистр
    		// берем символ из аргумента функции и переводим в нижний регистр
    		if (str[i].toLowerCase() === char.toLowerCase()) { // сравниваем оба значения
    			// если совпало увеличиваем счетчик на 1
    			count = count + 1;
    		}
    		// перед новой итерацией цикла увеличиваем индекс на 1
    		i = i + 1;
    	}
    // возвращаем из функции накопленный результат подсчета или начальное значение если совпадений не было
    	return count;
    };
    
    let result = countChars('abba#abba#abba#', '#') // пример использования
    console.log(result); // 3
    Ответ написан
    Комментировать
  • Являются ли стрелочные функции аналогом bind функций?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    2 комментария
  • Как проверить передан ли в параметр функции event?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Попробовать так и сяк
    function func(mixedData) {
      const id = mixedData?.target?.id ?? mixedData;
      console.log(id);
    }
    
    func(123) // 123
    func({target: {id: 456}}) // 456

    Что это было?!
    ?.optional chaining
    ??Nullish coalescing operator

    Но это всё не фэн-шуёво, не аккуратненько как-то.
    Лучше бы функции строго принимать один тип параметра — ожидать только id.
    А что-то поменять при вызовах.
    Ответ написан
    6 комментариев
  • Как проверить передан ли в параметр функции event?

    RAX7
    @RAX7
    Можно с помощью оператора instanceof
    function func(data) {
      if (data instanceof Event) {
        var id = data.target.id;
      } else {
        var id = data;
      }
    }

    Но лучше использовать кастомные события и проверять наличие поля detail в объекте события
    function func(event) {
      const id = event.detail ? event.detail.id : event.target.id;
    }
    domElement.dispatchEvent(new CustomEvent('event-name', { detail: { id: 'id-42' } }));
    Ответ написан
    1 комментарий
  • Какую книгу прочитать по JavaScript со средним уровнем знания js?

    black1277
    @black1277
    Вольный стрелок
    Прочитайте серию книг "Вы пока еще не знаете JS" Кайла Симпсона, есть издания 2022г.
    Ответ написан
    Комментировать
  • Как этот сайт запустить? Что для этого нужно? (Язык тут JS + HTML)?

    black1277
    @black1277
    Вольный стрелок
    Ну во-первых, прочитайте что написано в файлах README.md - обычно там записаны инструкции по установке и запуску.
    Во-вторых, нужно будет произвести установку всех зависимостей из файлов package.json - через консоль в каждой из папок набрать npm install , а для этого нужно установить сначала Node.js
    В-третьих, нужно заглянуть в каждый package.json - чтобы узнать какие команды для запуска используются (обычно это npm run start) и соответственно запустить их в каждой из папок (клиент, сервер). (Хотя возможно настроено на запуск единой командой)
    Ответ написан
    3 комментария
  • Какая нижняя планка для изучения React?

    black1277
    @black1277
    Вольный стрелок
    Нужны желание и мотивация. Изучайте прямо сейчас. Делайте много маленьких и простых приложений, чтобы усвоить основы и понять концепции этого фреймворка. Опыт будет накапливаться, в том числе и на чистом js. Если всё время откладывать и чего-то ждать - не заметите как "поезд уедет".
    Ответ написан
    1 комментарий