c# - Jint 数组函数 ECMA 5.1

标签 c# ecmascript-5 jint

我正在尝试使用 Jint (v2.10.4.0) 将一个任意 JSON 结构转换为另一个。但是,我在使用 ma​​p 时遇到问题。

根据 ECMA 5.1 语言规范,map应该存在于 Array.prototye 上。但是,当我尝试使用它时,出现错误:Jint.Runtime.JavaScriptException: 'Object has no method '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 引入 polyfill?

最佳答案

您的代码正在添加一个字符串值作为 x,因此 Jint 无法在字符串实例上找到 map。您可能假设 SetValue 方法正在将参数作为脚本求值,但它实际上只是将 .NET 对象分配给 JavaScript 变量。

要分配一个数组,您需要传递一个 C# 数组,例如 SetValue("x", new [] { 1, 2, 3, 4, 5 }) 或运行等效的脚本,例如执行("var x = [1, 2, 3, 4, 5 ]")

关于c# - Jint 数组函数 ECMA 5.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44236341/

相关文章:

c# - 以编程方式添加 Adomd 参数 C#

c# - C#Dapper和MySQL随机错误,即 fatal error /从流读取失败等

JavaScript:测试未定义值的变量;测试对象是否为数组

javascript - Javascript 中的 Object.__proto__.__proto__ 对象是否有通用术语/名称?

javascript - 函数的自定义原型(prototype)链

c# - NHibernate如何避免session被关闭

c# - 从 aspx 页面下载 PDF

c# - 有人用 Jint 进行可视化调试吗?

javascript - 使用 .Net 在服务器端加载 DOM 并执行 javascript