Java (v8) 390 276 bytes
Java (v8) 390 276 bytes
public static Object[] f(final Object[]a) {
List<Object>r=new ArrayList<>();boolean t=false;int n=0;
for(final Object p:a)
if(t=p instanceof Object[]){for(final Object q:(Object[])p) r.add(q);}
else r.add(p);
return(t)?f(r.toArray()):r.toArray();
}
Just for completeness and all that. :) Can't say Java's code-efficient.