function deepEqual(x, y) {
if ((typeof x == "object" && x != null) && (typeof y == "object" && y != null)) {
if (Object.keys(x).length != Object.keys(y).length) return false;
for (var prop in x) {
if (y.hasOwnProperty(prop)) {
if (! deepEqual(x[prop], y[prop])) return false;
}
else return false;
}
return true;
}
else if (x !== y) return false;
else return true;
}
var a = [1,2,'hello'];
var b = [1,2,'hello'];
var c = [1,'2','hello'];
var d = ['hello',2,1];
console.log( deepEqual(a,b) ); // true
console.log( deepEqual(a,c) ); // false
console.log( deepEqual(a,d) ); // false