Функция Array.filter в серверном Javascript
Я хотел бы отфильтровать массив в моем XPage с Javascript на стороне сервера. К сожалению, я получаю следующую ошибку:
Ошибка вызова метода 'filter(Function)' для объекта типа 'Array [JavaScript Object]'
У меня есть массив строк, как ["elem1","elem2","elem3"]
Я называю функцию так:
list.filter(function(){
});
Есть ли причина, по которой эта ошибка происходит? Эта функция вообще существует в ssjs?
Этот вопрос не является дубликатом, поскольку неясно, что Xpages/Lotus Notes запускает Rhino в фоновом режиме.
2 ответа
Похоже, что любая серверная среда JavaScript, которую вы используете, не поддерживает функции ES5 (это функции из спецификации 5-го издания от декабря 2009 г.).
Вы можете использовать polyfill для этой и других вещей, которые были добавлены в Array, смотрите MDN, но будьте осторожны: если функции ES5 не поддерживаются, невозможно что-то добавить в Array.prototype
не делая их перечисляемыми, имея в виду любой код (неправильно), используя for-in
цикл через массивы будет затронут.
За XPages стоит Rhino. А в этой ТАКОЙ теме нет Array.filter() в Rhino? говорит, что это устарело.
Редактировать: нет, это не так. Несколько лет назад я где-то читал об этом. Теперь кажется, что это не так. Согласно комментарию Дэна Сиклза (цитируя Филиппа Рианда?) Здесь:
Он работает на сервере jvm и использует javascript в качестве языка приложения. По причинам лицензирования IBM написала свой собственный движок jvm javascript вместо использования Rhino. С отправкой Rhino в java 6 они должны быть в состоянии отправить его в Designer 8.5 (или более поздней версии). Проблемы с лицензированием могли быть связаны с такими расширениями, как @Formulas и объявления типов. Классы, модули / пространства имен и объявления типов идут в javascript 2, и даже Google помогает реализовать это в Rhino. Я не хотел бы видеть нестандартный движок javascript, лежащий в основе самой крутой технологии веб-разработки в Domino.
Говоря о Rhino, "самая важная новая функция, которая не столь определенно будет в 8.5, как XPages", использует Rhino и другие языки сценариев jvm на клиенте. Если это войдет в продукт, через два года большинство новых приложений Notes не будут написаны ни на Lotusscript, ни на Java. Я оставлю это на этом.
На самом деле, есть несколько тем, как использовать Rhino в XPages, поэтому с самой новой версией Rhino ваш код будет работать. В любом случае, мой совет - использовать вызовы Java.