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

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

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

1 Ответ

0 голосов
/ 31 декабря 2018

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

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

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

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

...