2017-09-26 73 views
4

我有一個Java HashMap,我已經傳遞給腳本引擎。我想在處理它們時刪除條目,因爲我稍後會報告無效的鍵。清除條目的明顯通常方法(delete testMap['key'];)不起作用。如何從Nashorn內部的Java Map中刪除元素JavaScript

我該如何通過此測試?

@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()); 
} 

回答

3

如果你知道你有一個HashMap,你可以使用它的Map APINashorn,即:

@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()); 
} 
+0

完美!謝謝。 –