Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557

Добавить записи в объект

04.02.2020, 12:26. Показов 1111. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, товарищи, никак не могу понять что я делаю не так, собственно имеется вот такой код
JavaScript
1
2
3
4
5
6
7
8
9
var params = getUrlParams(window.location);
function getUrlParams(url){
        var regex = /[?&]([^=#]+)=([^&#]*)/g, params = {}, match;
        while(match = regex.exec(url)) {
            console.log(match[1], ' = ', match[2])
            params.match[1] = match[2];
        }
        return params;
}
мне нужно получить все параметры из строки подобного рода -
Code
1
сайт.ком?cityId=523&countryId=5732&after=04.02.2020&before=11.02.2020&accommodationId=1&tourId=26313&tourId=14351&tourId=5734&tourId=14355&tourId=111466&tourId=14353&tourId=416623&tourId=14354&tourId=54766&tourId=5735&tourType=1&hotelClassId=2568&hotelClassBetter=true&rAndBId=15350&rAndBBetter=true&currency=18864&priceMin=0&priceMax=15000
и надо это получить объектом, в результате проверки вижу что скрипт начинает получать данные (cityId = 523) а потом благополучно отваливается с ошибкой Uncaught TypeError: Cannot set property '1' of undefined
подскажите что я делаю не так?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2020, 12:26
Ответы с готовыми решениями:

Добавить в уже существующий объект свойство и положить в него объект
У меня имеется такая вложенность в редьюсере initialState = { prop1: { props2: { prop3: {id:...

Автоматически добавить объект в объект
Приветствую тебя читатель. Попытаюсь объяснить чего я хочу, если не понятно уточняйте. Вообщем дело такое, есть объект который...

Добавить 3d объект
При добавлении в модель стороннего 3d объекта выдает ошибку "FieldOfView must be (0,Pl)". Объект добавляю по инструкции...

6
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
04.02.2020, 12:46
Цитата Сообщение от FreeYourMind Посмотреть сообщение
JavaScript
1
params.match[1] = match[2];
У params = {} нет свойства match, отсюда и ошибка - вы пытаетесь обратится к undefined[1] = ...
JavaScript
1
2
3
4
5
6
7
8
9
10
var params = getUrlParams(window.location);
function getUrlParams(url){
        var regex = /[?&]([^=#]+)=([^&#]*)/g, params = {}, match;
        while(match = regex.exec(url)) {
            console.log(match[1], ' = ', match[2])
            // params.match[1] = match[2];
            params[match[1]] = match[2];
        }
        return params;
}
1
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
04.02.2020, 12:51  [ТС]
Цитата Сообщение от j2FunOnly Посмотреть сообщение
params[match[1]] = match[2];
вот в этом то и суть, данный вариант оставит только последний повторяющийся параметр, а мне надо что бы попадали все..
например tourId=26313&tourId=14351&tourId=5734&to urId=14355 в объекте оставит только tourId: 14355
по этому и ломаю голову как сделать правильно
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.02.2020, 15:24
FreeYourMind, ошибка была в единственном месте.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function getUrlParams(url) {
    var regex = /[?&]([^=#]+)=([^&#]*)/g, params = {}, match;
    while (match = regex.exec(url)) {
        console.log(match[1], ' = ', match[2])
        params[match[1]] = match[2]; // Исправлено
    }
    return params;
}
 
var url = "сайт.ком?cityId=523&countryId=5732&after=04.02.2020&before=11.02.2020&accommodationId=1&tourId=26313&tourId=14351&tourId=5734&tourId=14355&tourId=111466&tourId=14353&tourId=416623&tourId=14354&tourId=54766&tourId=5735&tourType=1&hotelClassId=2568&hotelClassBetter=true&rAndBId=15350&rAndBBetter=true&currency=18864&priceMin=0&priceMax=15000";
console.log(getUrlParams(url));
1
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
04.02.2020, 15:30  [ТС]
amr-now, да, мне уже сказали про это, но такой вариант вернет только последний повторяющийся параметр tourId
я ищу способ получить именно все параметры. на данный момент пока пришел к варианту
JavaScript
1
2
3
4
5
6
while(match = regex.exec(url)) {
            if (params[match[1]]){
                params[match[1]] += ','+match[2];
            } else {
                params[match[1]] = match[2];
            }
а потом уже как то разбивать строку по "," и уже обрабатывать

хотелось бы что то без этих лишних манипуляций
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.02.2020, 15:48
Лучший ответ Сообщение было отмечено FreeYourMind как решение

Решение

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function getUrlParams(url) {
    var regex = /[?&]([^=#]+)=([^&#]*)/g, params = {}, match;
    while (match = regex.exec(url)) {
        console.log(match[1], ' = ', match[2])
        if (params[match[1]] === undefined)
            params[match[1]] = match[2]; 
        else {
            if (typeof params[match[1]] !== "object")
                params[match[1]] = [params[match[1]]];
            params[match[1]].push(match[2]);
        }
    }
    return params;
}
 
var url = "сайт.ком?cityId=523&countryId=5732&after=04.02.2020&before=11.02.2020&accommodationId=1&tourId=26313&tourId=14351&tourId=5734&tourId=14355&tourId=111466&tourId=14353&tourId=416623&tourId=14354&tourId=54766&tourId=5735&tourType=1&hotelClassId=2568&hotelClassBetter=true&rAndBId=15350&rAndBBetter=true&currency=18864&priceMin=0&priceMax=15000";
console.log(getUrlParams(url));
Добавлено через 4 минуты
---
А реально круто передавать массивы в формате x-www-urlencoded ?

Я например передаю массивы обычно в JSON-строке POST-запросом.
1
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
04.02.2020, 16:24  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
А реально круто передавать массивы в формате x-www-urlencoded ?
мне эти данные нужны для заполнения некоторых элементов страницы. Просто я еще не особо опытный разработчик и не знаю на сколько я правильно делаю некоторые задачи.. а спросить не у кого и это единственное место где могу хоть какие то ответы получать.

у меня получается система следующая - имеются 2 страницы на одной - форма(ее изначально заполняют) а после отправки уже вторая страница отображает результат запроса и собственно там есть форма с фильтром(который пока не знаю как реализовать), и вот эта форма получает некоторые параметры из полученного ГЕТ запроса. и вот какая бест практика для этого есть я не знаю.. по этому колдую сам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2020, 16:24
Помогаю со студенческими работами здесь

Добавить объект класса
Всем привет, делаю очередное задание. Мне нужно добавлять записи в "бд". Базой даных мне должен служить класс, в таком случае, как я...

Добавить на страницу объект
Всем привет! Помогите пжл разобраться в следующей ситуации. Есть объект "бегунок" <object...

Добавить объект в изображение
Допустим, у меня есть картинка, на которой изображен стол. Как мне отобразить какой-нибудь объект(к примеру, картинку с вазой) на плоскость...

Добавить объект из другого класса
Всем привет. Пробую создать игру понг. Создал 3 класса pong - сама игра, pad - ракетка и ball. В классе pong создал JFrame и JPanel....

Как добавить объект в коллекцию?
Помогите объект класса добавить в коллекцию, а в коллекции установить сортировку по выбранному полю.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru