0

我喜欢做递归脚本,比如:

var slask="http://www.vskg.se/a-konstnarer/kn_1180/t_bild1.jpg?1357162516228";
slask.split("/").splice(3,50).join("/");

删除http://www.vskg.se/,这将返回:

/a-konstnarer/kn_1180/t_bild1.jpg?1357162516228

如我所愿!为什么这很奇怪?因为splice()应该删除从 3 到 50 的所有项目,但它所做的是返回从 3 到 50 的所有项目。这是正常的,还是仅在 OSX 的 Opera、Safari 和 Chrome 中?

4

2 回答 2

4

splice从原始数组中删除项目并返回它们。

如果您在slask运行此代码后查看,您会看到它是“已删除”的部分。

实际上,您实际上是从 URL 中删除路径并返回它。

非破坏性的替代方案是slice.

另外,请注意第二个参数是可选的。您不必将其设置为很高的数字。

slask.split("/").slice(3).join("/");
于 2013-01-02T22:20:51.817 回答
1

splice 删除和添加项目到数组:

var leftovers = array.splice(index,howmany,item1,.....,itemX)

其中 index 是起点 howmany是要删除的数量(如果有的话)剩余的参数注入在给定index

arraynow 是从剩余参数中添加任何项目减去 . 指定的删除项目的结果howmanyleftovers如果howmany大于零,就是你拼接取出的物品。

所以:

var arr = ["one","two","three"];
var removed = arr.splice(1,1,"green");

removed >> ["two"] 
arr >> ["one","green","three"]
于 2013-01-02T22:24:54.290 回答