Как проверить, является ли переменная массивом определенного типа объектов в javascript? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть объект. Давайте назовем это foo. Я хочу, чтобы bar (функция или другой объект, на самом деле не имеет значения) принимал массив foo. Я также хочу убедиться, что это действительно так, поэтому я хочу проверить тип.

Однако, согласно https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof, оператор typeof не делает массивы. Он рассматривает их как объекты. Немного покопавшись, я обнаружил Как проверить, является ли объект массивом? , сказав использовать Array.isArray для проверки, является ли он массивом, но кроме циклического прохождения всего, есть ли способ проверить, является ли данная переменная массивом foo?

Или я правильно помню, что new Foo()===new Foo() никогда не соответствует действительности? Если так, значит ли это, что невозможно проверить то, что я хочу?

1 Ответ

1 голос
/ 12 февраля 2020

но кроме цикла по всему, есть ли способ проверить, является ли данная переменная массивом foo?

Нет, но такой цикл довольно прост, просто проверить, прошел ли every элемент instanceof, проверить:

function Foo() {}
function bar(arr) {
  if (!arr.every(item => item instanceof Foo)) {
    console.log('Bad arguments');
    return;
  }
  console.log('OK');
}

const f = new Foo();
bar([f]);
bar([1]);
...