如何在Javascript中遍历Java集合
How to iterate through Java collection in Javascript
我正在尝试在Java程序中使用Javascript编写脚本。我还没有找到在Javascript中迭代Java集合的方法。如果我为集合调用iterator()方法,我得到的是方法名而不是元素。
下面是一个示例代码:
function getValue(row, components) {
var apartment = components.get(0);
var rooms = apartment.getRooms();
for (var room in rooms.iterator()) {
println(room);
}
return rooms.toString();
}
apartment.getRooms()返回一个房间集合。当我研究这个函数返回的值时,我知道它的内容是正确的,但是打印出来的值是方法名。
我从Java程序中调用Javascript,像这样:
getInvocable().invokeFunction("getValue", row, components);
似乎如果我按如下方式进行迭代:
function getValue(row, components) {
var apartment = components.get(0);
var rooms = apartment.getRelated();
for (var iterator = rooms.iterator(); iterator.hasNext();) {
var room = iterator.next();
println(room);
}
return rooms.toString();
}
。
要使用for in
,您必须首先将其转换为数组:
Collection<String> coll = Arrays.asList("foo", "bar", "baz");
String script = "var arr = coll.toArray();'n"
+ "for(var idx in arr) println(arr[idx]);'n";
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("ECMAScript");
engine.getContext().setAttribute("coll", coll, ScriptContext.ENGINE_SCOPE);
engine.eval(script);
否则将遍历对象属性。
如果你使用的是Rhino 1.7或更高版本,你可以使用它的非标准迭代器支持:
for (i in Iterator(coll)) print(i);
相关文章:
- 循环遍历以数组为值的Javascript对象
- 遍历类元素数组,并在jquery中选择同级元素
- Jquery遍历表元素
- Chrome扩展:遍历不同的页面并收集数据
- 如何遍历包含对象的数组-javascript
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 遍历AngularJs中的对象
- JQuery 遍历当前 SELECT 值
- 循环遍历包含另一个表单的表单
- 使用Yadda和Protractor重用步骤定义,遍历所需文件
- 遍历D3中所有数据点之间的所有值
- 自动遍历所有链接的事件
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- 如何使用 document.querySelectorAll 遍历选定的元素
- Java 脚本:递归地遍历关联的 HTML 文件的 Dom,并打印遇到的元素类型
- Java 脚本:遍历 JSON
- 使用Thymeleaf在JavaScript中循环遍历Java对象列表
- 遍历2D数组(网格)的最佳寻路算法(JavaScript/Java/ c#)
- 如何遍历 @Model.ICollection in Java Script 函数
- 如何在Javascript中遍历Java集合