0

我想用服务器端 Javascript 过滤我的 XPage 中的一个数组。不幸的是,我收到以下错误:

在“数组 [JavaScript 对象]”类型的对象上调用方法“过滤器(函数)”时出错

我有一个字符串数组,比如["elem1","elem2","elem3"]

我这样调用函数:

list.filter(function(){

});

发生此错误有什么原因吗?这个功能甚至存在于 ssjs 中吗?

这个问题不是重复的,因为不清楚 Xpages/Lotus Notes 在后台运行 Rhino。

4

2 回答 2

1

听起来您使用的任何服务器端 JavaScript 环境都不支持 ES5 功能(这是 2009 年 12 月第 5 版规范中的功能)。

您可以为添加到 Array 的内容和其他内容使用 polyfill,请参阅MDN,但请注意:如果不支持 ES5 功能,则无法在Array.prototype不使其可枚举的情况下添加内容,这意味着任何代码(错误)for-in使用循环通过数组会受到影响。

于 2016-11-04T07:58:48.773 回答
0

XPages 背后有 Rhino。而这个 SO 主题 在 Rhino 中没有 Array.filter() 吗?说,过时了。

编辑: 不,不是。几年前,我在某个地方读到过它。现在看来这不是真的。根据 Dan Sickles 的评论(引用 Philippe Riand?

它在服务器 jvm 上运行,并使用 javascript 作为应用程序语言。出于许可原因,IBM 编写了自己的 jvm javascript 引擎,而不是使用 Rhino。随着 Rhino 在 Java 6 中发布,他们应该能够在 Designer 8.5(或更高版本)中发布它。许可问题可能与 @Formulas 和类型声明等扩展有关。类、模块/命名空间和类型声明将出现在 javascript 2 中,甚至 google 也在帮助在 Rhino 中实现这些。我不希望看到 Domino 中最酷的 Web 开发技术背后有一个非标准的 javascript 引擎。

说到 Rhino,“在 8.5 中最重要的新特性不如 XPages”在客户端使用 Rhino 和其他 jvm 脚本语言。如果这成为产品,两年后大多数新的 Notes 应用程序将既不是用 Lotusscript 也不是用 Java 编写的。我就这样吧。

事实上,关于如何在 XPages 中使用 Rhino 的话题很少,所以使用最新的 Rhino 版本,您的代码就可以工作。无论如何,我的建议是使用 Java 调用。

于 2016-11-04T08:02:44.390 回答