代码之家  ›  专栏  ›  技术社区  ›  Maurice Perry

如何知道属性是否是数组?

  •  0
  • Maurice Perry  · 技术社区  · 14 年前

    我使用Rhino API调用一个javascript函数:

    Function fct = context.compileFunction(scope, script, "script", 1, null);
    Scriptable result = (Scriptable) fct.call(
                context, scope, attrs, new Object[0]);
    Object obj = result.get("objectClass", result);
    

    现在,如何测试“objectclass”属性的值是否为数组?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Marimuthu Madasamy    14 年前

    这可能会给您一些建议:声明一个函数来确定一个对象是否是数组,并调用传递对象的函数。

    engine.eval("function isArray(obj) {" +
                    "  return obj.constructor == Array;" +
                    "}");
    Object obj = engine.eval("[1,2,3,4]");
    Invocable invocableEngine = (Invocable) engine;
    System.out.println(invocableEngine.invokeFunction("isArray", obj)); //true
    
        2
  •  1
  •   Tom Tom    9 年前
    boolean b = object.getClass().isArray();
    if (b) {
        // object is an array
    }
    

    上面的解决方案是检查Java数组。

    如果您在Java代码中寻找JavaScript数组,那么您需要知道JavaScript为数组返回的对象,并使用 instanceof .

        3
  •  0
  •   oli    14 年前

    通过执行以下操作,可以检查是否有任何对象是数组 object.getClass().isArray()