2017-05-29 7 views
1

Jint(v2.10.4.0)を使用して、任意のJSON構造体を別の構造体に変換しようとしています。しかし、私はマップを使用して問題を抱えています。Jint配列関数ECMA 5.1

ECMA 5.1言語仕様によれば、mapがArray.protyeyeに存在する必要があります。私はそれを使用しようとすると、しかし、私はエラーを取得する: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のポリフィルを導入する方法はありますか?

答えて

1

コードでは文字列値をxとしているため、Jintは文字列インスタンスでmapを見つけることができません。おそらくSetValueメソッドがパラメータをスクリプトとして評価していたと仮定していましたが、実際には.NETオブジェクトをJavaScriptの変数に割り当てるだけです。

配列を割り当てるには、SetValue("x", new [] { 1, 2, 3, 4, 5 })のようなC#配列を渡すか、Execute("var x = [1, 2, 3, 4, 5 ]")のような同等のスクリプトを実行する必要があります。

+0

ありがとうございました。私は最終的にこれを把握しました! –