Javascript - 数组弹出并获取数组的第一部分

时间:2012-12-01 23:35:46

标签: javascript arrays split pop

我有一条路径,我试图在最后一个/所以后面弹出所有内容,在这种情况下是'文件夹',将新路径保留为C:// local / drive / folder /。

我试图弹出最后一个/使用pop(),但无法将路径的第一部分作为新路径:

var path = C://local/drive/folder/folder
var newpath = path.split("/").pop();
var newpath = newpath[0]; //should be C://local/drive/folder/

我该如何做到这一点?

5 个答案:

答案 0 :(得分:4)

使用.slice()代替pop()

var newpath = path.split("/").slice(0, -1).join("/");

如果你还需要最后一部分,那么只需使用.pop(),但首先将数组存储在一个单独的变量中。

var parts = path.split("/");

var last = parts.pop();
var first = parts.join("/");

现在last有最后一部分,first包含最后一部分之前的所有内容。


另一种解决方案是在字符串上使用.lastIndexOf()

var idx = path.lastIndexOf("/");

var first = path.slice(0, idx);
var last = path.slice(idx + 1);

答案 1 :(得分:2)

只需将最后一个语句替换为:

var path = C://local/drive/folder/folder
path.split("/").pop(); // Discard the poped element.
var newpath = path.join("/"); // It will be C://local/drive/folder

关于Array.pop 的说明:每次调用pop方法时,返回最后一个元素,并且 将其从数组中删除

答案 2 :(得分:1)

还可以使用正则表达式:

function stripLastPiece(path) {
    var matches = path.match(/^(.*\/)[^\/]+$/);
    if (matches) {
        return(matches[1]);
    }
    return(path);
}

工作示例:http://jsfiddle.net/jfriend00/av7Mn/

答案 3 :(得分:1)

如果你想获得数组的第一部分。

var firstWord = fullnamesaved.split("")。shift();

这无视空间之后的所有事情。

答案 4 :(得分:0)

var foo = "C://local/drive/folder/folder";
foo.match(/(.+\/)[^\/]+$/);

会导致:["C://local/drive/folder/folder", "C://local/drive/folder/"]

虽然我更喜欢user1689607的回答