Saya memiliki string url berikut sebagai contoh

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

Saya ingin menyimpan 101 sehingga saya dapat menggunakan bagian string itu dalam beberapa logika lain. Saya mencoba yang berikut ini.

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

Tetapi kembali kosong, dari apa yang saya tahu, sebagai pop(), pop off last but dan last bit hanya / dan tidak ada setelah itu.

Bagaimana saya bisa mengubah kode saya untuk memberi saya nilai setelah detik terakhir /

0
Nofel 29 Oktober 2019, 11:43

4 jawaban

Jawaban Terbaik

Saat Anda membagi, yang terakhir / terbelah sebagai string kosong, yang Anda terima saat Anda pop(). Jika kami menghapusnya sebelum membelah Anda akan mendapatkan hasil yang Anda inginkan.

Anda bisa melakukan oneliner ini value.slice(0, -1).split('/').pop();

1
Sebastian Sundin 29 Oktober 2019, 08:49

Jika Anda tidak yakin apakah akan ada garis miring, Anda dapat menggunakan filter untuk menghapus semua elemen kosong, lalu pop '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) hanya mengulang setiap item dalam larik untuk melihat apakah itu bernilai true, jadi semua item palsu seperti '' atau tidak terdefinisi akan dihapus.

2
Kobe 29 Oktober 2019, 08:55

Karena URL berakhir dengan pembatas yang Anda pisahkan, item terakhir dalam larik yang dihasilkan akan menjadi string kosong, dan item kedua hingga terakhir akan menjadi kecocokan yang Anda cari. Anda dapat .pop() dua kali:

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

Atau Anda bisa menggunakan ekspresi reguler untuk mencocokkan karakter non-/, diikuti oleh / dan akhir string::

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

Anda dapat mengekstrak nomor sebelum '/' terakhir sebagai berikut.

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 Oktober 2019, 08:59