предисловие
Теперь есть такой URL: www.baidu.com/s?wd=Cai Xukun&skill=basketball&year=2019, как мне получить поля по запросу? В этот раз пригодятся регулярные выражения, и эффект будет следующим:
Убивать цыплят — хорошая идея.Сегодня мы изучим интерфейс, специально используемый для обработки URL-запроса: URLSearchParams.
Простой в использовании
Просто нужно создать новый экземпляр URLSearchParams, код:
let url = '?wd=蔡徐坤&skill=篮球&year=2019';
let searchParams = new URLSearchParams(url);
for (let p of searchParams) {
console.log(p);
}
// ["wd", "蔡徐坤"]
// ["skill", "篮球"]
// ["year", "2019"]
получить одно поле
Что, если теперь я просто хочу получить значение одного поля? Просто вызовите метод get этого экземпляра, код:
searchParams.get('wd') // "蔡徐坤"
searchParams.get('skill') // "篮球"
searchParams.get('year') // "2019"
Иногда я не знаю, существует ли поле, поэтому я хочу проверить его заранее. Используйте метод экземпляра has для оценки кода:
searchParams.has('wd') // true
searchParams.has('age') // false
добавить поле
Экземпляр предоставляет метод append для добавления полей. Этот метод получает два параметра, первый из которых является ключом, а второй — значением. Код:
searchParams.append('age', 26);
searchParams.has('age'); // true
searchParams.get('age'); // 26
удалить поле
Теперь мне больше не нужно поле года, просто используйте удаление напрямую, код:
searchParams.delete('year');
searchParams.has('year'); // false
установить поле
Иногда мы хотим переписать поле вместо того, чтобы добавить поле. В это время нам нужно использовать метод набора. Например, мы думаем, что брат Кун может не только играть в баскетбол, но и петь, танцевать и читать рэп. Код:
searchParams.set('skill', '篮球 唱 跳 rap');
преобразовать в строку
После модификации экземпляра иногда необходимо преобразовать его в строку, выполнить роутинговые переходы и т.д., использовать метод toString
searchParams.toString(); // "wd=蔡徐坤&skill=篮球+唱+跳+rap&year=2019&age=26"
После волны операций
совместимость
Современные браузеры в основном хороши, но поддержка IE не идеальна.