javascript - java 和 javascript - 访问 map

标签 javascript java rhino

我正在使用 rhino 在我的 Java 程序中执行 JavaScript 代码。 我无法在 JavaScript 中迭代 map 。

Java 端:

private final Map<Long, ClassEmployees > employees ;
...
employees.put (numEmployees, new ClassEmployees());
...

JavaScript 端:

keys = employees.keySet();
for (var i in keys) {
  print ("++ " + i);   // ===> print the method ??? Strange...no?
}

===> 输出:

++ getClass
++ iterator
++ toArray
++ addAll
++ remove
++ equals
++ containsAll
++ class
++ hashCode
++ contains
++ wait
++ add
++ size
++ clear
++ isEmpty
++ notify
++ empty
++ retainAll
++ toString
++ notifyAll
++ removeAll

最佳答案

您的keys变量保存对Java Set对象的引用, 但 JavaScript 的 for in 构造并不真正知道如何迭代它,因此将它像对待任何其他对象一样对待。

The for...in statement iterates over the enumerable properties of an object

Set 对象方法是它的可枚举属性,因此这就是您所得到的。

要迭代 Set 的基础值,您应该使用显式迭代器(就像在 Java 中一样),或者简单地将其转换为数组,如下所示:

for each (var i in keys.toArray() ) {
     //...        
}

关于javascript - java 和 javascript - 访问 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153253/

相关文章:

java - 我如何在 Java 中指定我自己的 Rhino 上下文?

javascript - Spring Boot 通过嵌入式 Tomcat 在 web-application.jar 之外提供外部 HTML/javascript/css 服务?

javascript - 单击按钮时,有没有办法为谷歌堆积条形图的特定列着色?

javascript - 使用 JavaScript 查询数据

java - 使用Java程序填写Git凭证

java - 如何在小程序中使用 Rhino javascript 引擎

javascript - 为什么民间故事和 lambda 如此不同?

java - renameTo() 不起作用

java - ScheduledExecutorService 和 Shutdown Hook

java - 如何使用 Rhino 在 Javascript 中将 Java 类中的方法添加为全局函数?