服务器端Javascript中的Array.filter函数

时间:2016-11-04 07:56:58

标签: javascript xpages lotus-notes ssjs

我想使用serverside Javascript在我的XPage中过滤一个数组。不幸的是我收到以下错误:

  

调用方法错误'过滤器(功能)'在类型'数组[JavaScript对象]'

的对象上

我有一个像["elem1","elem2","elem3"]

这样的字符串数组

我这样称呼函数:

list.filter(function(){

});

是否有任何理由发生此错误?这个功能甚至存在于ssjs中吗?

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

2 个答案:

答案 0 :(得分:1)

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

您可以使用polyfill和添加到Array的其他内容,请参阅MDN,但要注意:如果不支持ES5功能,则无法向{添加内容{1}}不会使它们可枚举,这意味着使用Array.prototypeloop through arrays的任何代码(错误)都会受到影响。

答案 1 :(得分:0)

XPage背后有Rhino。而这个SO主题 No Array.filter() in Rhino?说,它已经过时了。

修改 不它不是。几年前我读到了某个地方。现在看来这不是真的。根据Dan Sickles的评论(引用Philippe Riand?)here

  

它在服务器jvm上运行并使用javascript作为应用程序   语言。 出于许可原因,IBM编写了自己的jvm javascript   引擎而不是使用Rhino。使用java 6中的Rhino运送它们   应该能够在Designer 8.5(或更高版本)中发布它。许可证   问题可能出现在像@Formulas和类型这样的扩展上   声明。类,模块/命名空间和类型声明是   进入javascript 2甚至谷歌正在帮助实现这一目标   在Rhino中实现。我不想看到一个非标准的JavaScript   引擎是Domino中最酷的Web开发技术的基础。

     

说到Rhino,“最重要的新功能并非如此   肯定会在8.5中使用Rhino和其他jvm脚本   客户端上的语言。如果这使它成为产品,两年   从现在起,大多数新的Notes应用程序都不会被写入   Lotusscript也不是Java。我会留下它。

事实上,如何在XPage中使用Rhino的主题很少,因此使用最新的Rhino版本,您的代码将起作用。无论如何,我的建议是使用Java调用。