2016-11-04 13 views
0

サーバサイドのJavascriptを使用してXPageで配列をフィルタリングしたいと思います。残念ながら、私は次のエラーを取得する:サーバサイドのArray.filter関数Javascript

Error calling method 'filter(Function)' on an object of type 'Array [JavaScript Object]'

私は["elem1","elem2","elem3"]

のような文字列の配列を持っている私はこのような関数を呼び出す:

list.filter(function(){ 

}); 

は、このエラーが発生しない理由はありますか?この関数はssjsにも存在しますか?

Xpages/Lotus NotesがRhinoをバックグラウンドで実行していることが明確でないため、この質問は重複しません。

+1

https://gist.github.com/katio/08bf3f5e058b950cd957 – mplungjan

答えて

1

使用しているサーバーサイドのJavaScript環境がES5の機能をサポートしていないようです(2009年12月の第5版仕様の機能です)。

あなたは、そのとアレイに追加された他のもののためのポリフィルを使用MDNを参照してください、しかし、注意してくださいすることができます(ES5の機能がサポートされていない場合、それは彼らが列挙せずにArray.prototypeに物事を追加することは不可能だ、任意のコードを意味します誤って)for-inloop through arraysを使用すると影響を受けます。

+0

polyfillとして受け入れることは私のためのトリックでした。それをssjsスクリプト・ライブラリに入れ、それをページに組み込みます。それにもかかわらず、他のすべてのコメントとアドバイスに感謝します! – MeMeMax

0

XPagesの後ろにはRhinoがあります。そしてこのSOの話題 No Array.filter() in Rhino?は古くなっています。

編集: いいえ、そうではありません。数年前、私はそれについてどこかを読んだ。今はそれが真実ではないようです。ダン・シックルズ(?フィリップRiandを引用)hereでコメントするによると:

It runs on the server jvm and uses javascript as the application language. For licensing reasons, IBM wrote their own jvm javascript engine instead of using Rhino. With Rhino shipping in java 6, they should be able to ship it in Designer 8.5 (or later). The licensing problems may have been around the extensions like @Formulas and type declarations. Classes, modules/namespaces and type declarations are coming in javascript 2 and even google is helping to get that implemented in Rhino. I'd hate to see a non-standard, javascript engine underlying the coolest web development technology in Domino.

Speaking of Rhino, the "most important new feature that is not as certain to be in 8.5 as XPages" uses Rhino and other jvm scripting languages on the client. If this makes it into the product, two years from now most new Notes applications will be written in neither Lotusscript nor Java. I'll leave it at that.

実際には、あなたのコードは動作します、最新のRhinoバージョンとなる、のXPagesでサイを使用するには、どのようにいくつかのトピックがあります。とにかく、私のアドバイスはJava呼び出しを使うことです。

+0

ssjsがデフォルトでRhinoを使用しているという確証は見つかりません。私は[ここ](http://dontpanic82.blogspot.co.uk/2010/05/using-rhino-javascript-engine-in-xpages.html)からリンクされた[this] /stackoverflow.com/questions/26695434/how-to-clean-ssjs-in-domino-server-after-someone-used-javascript-prototype-in​​-a))と[this](https://en.wikipedia .org/wiki/Comparison_of_server-side_JavaScript_solutions)にはありません。 Rhinoには**年**のArray#filterがありました。あなたは源を挙げることができますか? –