Это что троллинг?
Для определения массива достаточно
Array.isArray
Для определения объекта:
function isObject(item) {
return (typeof item === "object" && !Array.isArray(item) && item !== null);
}
Если в вашем коде возникают трудности с определением типа данных могу порекомендовать использовать
TypeScript или
Flow.
Еще старайтесь писать читаемый код. Использование ни о чем не говорящих аргументов, отсутствие пробелов между операторами и операндами, и
!0, !1 вместо
true, false не очень хорошая практика.