【问题标题】:How to remove element from Java Map from within Nashorn JavaScript如何从 Nashorn JavaScript 中的 Java Map 中删除元素
【发布时间】:2017-09-26 10:59:46
【问题描述】:

我有一个已传递给脚本引擎的 Java HashMap。我想在处理条目时删除它们,因为我稍后会报告无效密钥。删除条目的明显常用方法 (delete testMap['key'];) 无效。

如何让这个测试通过?

@Test
public void mapDelete() throws ScriptException{
    Map<String,String> map = new HashMap<>(1);
    map.put("key","value");

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
    engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put ("testMap", map);
    engine.eval("delete testMap['key'];");
    Assert.assertEquals (0, map.size());
}

【问题讨论】:

    标签: javascript java java-8 nashorn


    【解决方案1】:

    如果你知道你有一个HashMap,你可以在Nashorn中使用它的Map API,即:

    @Test
    public void mapDelete() throws ScriptException {
        Map<String,String> map = new HashMap<>(1);
        map.put("key","value");
    
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
        engine.getContext().getBindings(ScriptContext.GLOBAL_SCOPE).put ("testMap", map);
        engine.eval("testMap.remove('key');");
        Assert.assertEquals (0, map.size());
    }
    

    【讨论】:

    • 完美!谢谢。
    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2011-01-01
    • 2015-10-28
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多