GraalVM, как перенести объект списка Java в JavaScript, чтобы я мог сделать.push().forEach() на них?

Проблема заключается в том, что когда я пытаюсь передать объект Java List (ArrayList) в javascript как ProxyArray (ProxyArray.fromList()), его нельзя использовать с.forEach и.push. Также, если я передаю объект списка Java как есть, его можно использовать с.forEach, но не с.push. Есть ли решение?

Вот суть https://gist.github.com/okrean/5d6978bac15f257b90f581f371769935

1 ответ

Экземпляр java.util.ArrayList ведет себя как массив JS в некоторых отношениях, однако, случаи java.util.ArrayList не установлен их прототип Array.prototype.

Это причина, почему push функция не найдена на вашем значении, а forEach функция, которая называется на самом деле forEach функция, найденная в объекте Java, а не forEach из массива JS.

Обходной путь должен преобразовать java.util.ArrayList к массиву JS вручную, используя Java.from(value) в JS.

Смотрите также обсуждение в этом выпуске.

Другие вопросы по тегам