У меня есть следующая строка URL в качестве примера

https://jsonplaceholder.typicode.com/todos/101/'

Я хочу сохранить 101, чтобы использовать эту часть строки в другой логике. Я попробовал следующее.

const filter = (value)=>{
    return value.split("/").pop();
})

Но он возвращает пустой, насколько я знаю, как pop (), pop up последний, но и последний бит только / и ничего после этого.

Как я могу изменить свой код, чтобы дать мне значение после второй до последней /

0
Nofel 29 Окт 2019 в 11:43

4 ответа

Лучший ответ

Когда вы разделяете, последний / разделяется как пустая строка, которую вы получаете, когда вы pop (). Если мы удалим его до разделения, вы получите желаемый результат.

Вы могли бы сделать это {{Х0}}

1
Sebastian Sundin 29 Окт 2019 в 08:49

Если вы не уверены, что будет косая черта, вы можете использовать фильтр, чтобы удалить все пустые элементы, а затем вывести «101»:

const filter = value => value.split('/').filter(i => i).pop()

console.log(filter('https://jsonplaceholder.typicode.com/todos/101/'))
console.log(filter('https://jsonplaceholder.typicode.com/todos/101'))

filter(i => i) просто зацикливается на каждом элементе в массиве, чтобы увидеть, имеет ли он значение true, поэтому все ложные элементы, такие как '' или undefined, будут удалены.

2
Kobe 29 Окт 2019 в 08:55

Вы можете извлечь номер перед последним «/» следующим образом.

const url = 'https://jsonplaceholder.typicode.com/todos/101/';

const filter = value => {
    let segments = value.split('/');
    return segments[ segments.length -2];
}

console.log(filter(url));
0
cinch 29 Окт 2019 в 08:59

Поскольку URL-адрес заканчивается разделителем, на который вы разбиваете, последний элемент в результирующем массиве будет пустой строкой, а второй-последний элемент будет совпадением, которое вы ищете. Вы можете .pop() дважды:

const filter = (value)=>{
  const splits = value.split('/');
  splits.pop();
  return splits.pop();
};

Или вы можете использовать регулярное выражение для сопоставления не - / символов, за которыми следует / и конец строки ::

const filter = value => value.match(/[^\/]+(?=\/$)/)[0];
console.log(filter('https://jsonplaceholder.typicode.com/todos/101/'))
1
CertainPerformance 29 Окт 2019 в 08:47
58603897