Функции Jint Array ECMA 5.1
Я пытаюсь использовать Jint (v2.10.4.0) для перевода одной произвольной структуры JSON в другую. Однако у меня возникли проблемы с использованием карты.
Согласно спецификации языка ECMA 5.1, карта должна существовать на Array.prototye. Однако, когда я пытаюсь использовать его, я получаю сообщение об ошибке: Jint.Runtime.JavaScriptException: 'У объекта нет метода' map ''
Я тестирую это как
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
так что Джинт не может найти map
на экземпляре строки. Вы, вероятно, предположили, что SetValue
Метод оценивал параметр как скрипт, но на самом деле он просто присваивает объект.NET переменной JavaScript.
Чтобы назначить массив, вам нужно либо передать массив C#, например: SetValue("x", new [] { 1, 2, 3, 4, 5 })
или запустить эквивалентный скрипт как Execute("var x = [1, 2, 3, 4, 5 ]")
,