Array.pop - 最后两个元素 - JavaScript

时间:2017-10-16 07:24:03

标签: javascript arrays url

我在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

5 个答案:

答案 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)

我喜欢filter这样的新数组方法,所以有demo使用此

def printDictionary(dictionaryParm):

答案 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);