2017-05-29 49 views
1

我正在嘗試使用Jint(v2.10.4.0)將一個任意JSON結構轉換爲另一個。不過,我在使用地圖時遇到了問題。Jint數組函數ECMA 5.1

根據ECMA 5.1語言規範,map應該存在Array.prototye上。然而,當我嘗試使用它,我得到一個錯誤:Jint.Runtime.JavaScriptException:「對象有沒有方法'地圖」

我測試這個像

Engine engine = new Engine(); 
var doubles = engine.SetValue("x", "[ 1, 2, 3, 4, 5 ]") 
    .Execute("x.map(function(a){ return a + a; })") 
    .GetCompletionValue() 
    .ToObject(); 
Console.WriteLine(doubles); 
Console.ReadKey(); 

理想的情況下,我也想使用find,儘管這是ECMA6。有什麼我缺少使用Array.Prototype.map或有沒有一種方法爲Jint引入polyfills?

回答

1

您的代碼添加字符串值爲x,因此Jint無法在字符串實例上找到map。您可能認爲SetValue方法正在將參數評估爲腳本,但實際上只是將.NET對象分配給JavaScript varialble。

要分配一個數組,您需要傳遞一個C#數組,如SetValue("x", new [] { 1, 2, 3, 4, 5 })或者運行Execute("var x = [1, 2, 3, 4, 5 ]")等效腳本。

+0

謝謝。我終於搞清楚了! –