2017-02-01 29 views
0

我有一些邏輯需要在某些時候運行本機JavaScript函數並將「動態」參數傳遞給這些函數。例如,我需要調用定義爲["i want to split this", " " ]使用參數數組調用String.prototype.split

參數數組的split函數什麼,我想到目前爲止是這樣的:

String.prototype.split.call("i want to split this", " ")工作正常,但因爲我有我的論點是一個數組,那麼我需要使用apply。但是:

String.prototype.split.apply(null, ["i want to split this", " " ])

將無法​​正常工作,我會得到Uncaught TypeError: String.prototype.split called on null or undefined

東西使用callspread語法工程..讓:

String.prototype.split.call(...["i want to split this", " " ])

但問題是我的Node.js版本尚不支持spread語法。

希望對此有幫助。

+0

爲什麼你不能逆轉你的想法使你自己的'split()'函數接受一個單一的字符串或數組並相應地拆分? –

+0

@ScottMarcus這裏的問題是,我可能會調用其他本地功能,如分裂..這裏分裂只是一個例子..但基本上它可以是任何原生的JavaScript函數 – AhmadAssaf

+0

你如何確定什麼字符串被拆分?或者可以在哪個對象上調用本地函數。聽起來你太抽象了,IMO。 –

回答

0

您正在尋找

String.prototype.split.apply("i want to split this", [" "]) 

這是相當於

String.prototype.split.call("i want to split this", " ") 

如果你有一個數組用,而不是背景和論據獨立工作,你可以做

var arr = ["i want to split this", " "]; 
String.prototype.split.apply(arr[0], arr.slice(1)) 
或者(如果你不在乎變異):
String.prototype.split.apply(arr.shift(), arr) 
+0

'a [0] .split(a [1])有什麼問題' – Redu

+0

@Redu它不適用於任意多的參數。當然,如果'a.length'保證是'2',那麼這就是你應該使用的。 – Bergi

+0

那麼,使用多一個字符串參數調用['split'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)並沒有太大的作用,可以? –