@Sundararajan, I was previously using .getSlot(index) when extracting items from a ScriptObjectMirror when that mirror was an array until I ran into a undefined element and that is not equal to null as I had for my condition... so I swapped .getSlot(i) with .get(Integer.toString(i))
Are getMember(), get(), and getSlot() suppose to all return the same null or undefined value? Or is it expected to have getMember() and getSlot() to return Undefined object and get() to return null? As a side note... If this is the intended behavior this might be a better way to get the Undefined object instead of making a call out of nashorn to a public static method. Here is an example... (jdk8 1.8.0_102) Thanks, Arthur Fiedler public static void main(String[] args) throws Exception { NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); ScriptEngine scriptEngine = factory.getScriptEngine(); scriptEngine.eval("globalArray = ['line1',undefined,null];"); ScriptObjectMirror array = (ScriptObjectMirror)scriptEngine.get("globalArray"); System.out.println("size(): " + array.size()); for(int i = 0; i < array.size(); i++) { System.out.println("Index: " + i); String iStr = String.valueOf(i); System.out.println(" GetMember('"+iStr+"'): " + array.getMember(iStr)); System.out.println(" Get('"+iStr+"'): " + array.get(iStr)); System.out.println(" GetSlot("+iStr+"): " + array.getSlot(i)); } } /* size(): 3 Index: 0 GetMember('0'): line1 Get('0'): line1 GetSlot(0): line1 Index: 1 GetMember('1'): undefined Get('1'): null GetSlot(1): undefined Index: 2 GetMember('2'): null Get('2'): null GetSlot(2): null */