@newaitix

Как строго отделить Array от Object?

var ty={
	o:function(v){
		return!Array.isArray(v)?typeof v==='object':!1;
	},
	a:function(v){
		if(v!=null&&typeof v==='object')
			if(v.length>=0)
				return!0;
		return Array.isArray(v);
	}
}

Я сделал так. Мне кажется, что это оптимальный вариант. А как вы отделяете итерируемые массивы от объекта ?
  • Вопрос задан
  • 356 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Это что троллинг?
Для определения массива достаточно Array.isArray
Для определения объекта:
function isObject(item) {
  return (typeof item === "object" && !Array.isArray(item) && item !== null);
}

Если в вашем коде возникают трудности с определением типа данных могу порекомендовать использовать TypeScript или Flow.

Еще старайтесь писать читаемый код. Использование ни о чем не говорящих аргументов, отсутствие пробелов между операторами и операндами, и !0, !1 вместо true, false не очень хорошая практика.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
newaitix, да, согласен с Антон Спирин , у вас всё запущено.
Постараюсь проще объяснить отличия NodeList от Array.
Они наследуют свои основные свойства совершенно от разных прототипов. И единственными общими прототипами для них являются Object и null.
Для проверки можно также использовать instanceof.
if (obj instanceof Array) console.log('obj isArray!');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы