我在JavaScript中使用Array.pop函数有一个问题。 Array.pop删除并返回Array的最后一个元素。我的问题是:是否可以删除并返回数组的最后 TWO 元素并返回它们而不是最后一个?
我正在使用此函数返回URL的最后一个元素,如下所示:
网址:www.example.com/products/cream/handcreamproduct1
'url'.splice("/").pop(); -----> "handcreamproduct1"
我想要的是:
'url'.splice("/").pop(); -----> "cream/handcreamproduct1"
我想在url中取最后两个参数并返回它们,使用.pop我只得到最后一个。请记住,URL是动态长度。网址可能如下所示:
网址:www.example.com/products/cream/handcreamproduct1
或
网址:www.example.com/products/handcream/cream/handcreamproduct1
答案 0 :(得分:5)
Split数组,使用Array#slice获取最后两个元素,然后Array#join使用斜杠:
var url = 'www.example.com/products/cream/handcreamproduct1';
var lastTWo = url
.split("/") // split to an array
.slice(-2) // take the two last elements
.join('/') // join back to a string;
console.log(lastTWo);

答案 1 :(得分:1)
没有内置的数组函数可以做到这一点。
改为使用
const urlParts = 'url'.split('/');
return urlParts[urlParts.length - 2] + "/" + urlParts[urlParts.length - 1];
答案 2 :(得分:1)
答案 3 :(得分:0)
您可以将String.prototype.match()
与RegExp
/[^/]+\/[^/]+$/
匹配,以匹配一个或多个后跟"/"
的字符,后跟一个或多个后跟字符串结尾的字符
let url = "https://www.example.com/products/handcream/cream/handcreamproduct1";
let [res] = url.match(/[^/]+\/[^/]+$/);
console.log(res);
答案 4 :(得分:0)
请注意,如果URL字符串末尾有/,则此处的答案将仅返回URL的最后一部分:
var url = 'www.example.com/products/cream/handcreamproduct1/';
var lastTWo = url
.split("/") // split to an array
.slice(-2) // take the two last elements
.join('/') // join back to a string;
console.log(lastTWo);
要解决此问题,我们只需删除结尾的/
:
const urlRaw = 'www.example.com/products/cream/handcreamproduct1/';
const url = urlRaw.endsWith("/") ? urlRaw.slice(0, -1) : urlRaw
const lastTWo = url
.split("/") // split to an array
.slice(-2) // take the two last elements
.join('/') // join back to a string;
console.log(lastTWo);