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

私が望むように!なぜこれは奇妙ですか?は 3 から 50 までのすべてのアイテムを削除することになっているためsplice()、3 から 50 までのすべてのアイテムを返します。これは正常ですか、それとも OSX の Opera、Safari、Chrome だけですか?

4

2 に答える 2

4

splice元の配列からアイテムを削除して返します。

このコードが実行されたslask後に見ると、それが「削除された」部分であることがわかります。

実際、URLからパスを削除して、それを返すことになります。

非破壊的な代替手段はsliceです。

また、2番目の引数はオプションであることに注意してください。高い数値に設定する必要はありません。

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

splice は、配列への項目の削除と追加の両方を行います。

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

ここで、index は開始点 howmanyであり、指定された時点で注入する残りの引数 (存在する場合) を削除する数です。index

array現在は、残りの引数から で指定された削除されたアイテムを引いたアイテムを追加した結果ですhowmanyleftovershowman が 0 より大きい場合、スプライシングによって取り出したアイテムです。

それで:

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

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