Проблема заключается в сравнении массивов .
console.log(['a'] == ['a']); //false
Когда метод .includes()
проходит по массиву, в котором он вызывается, он проверяет каждый элемент, чтобы определить, является ли он равно значению, которое проверяется, пока не найдет совпадение или не проверит каждый элемент массива. Как вы можете видеть выше, когда проверяемое значение является массивом, оно не будет работать.
Обходным путем будет написание собственной функции .includes()
, в которой вы будете l oop через весь дочерний элемент. массивы в родительском массиве и для каждого дочернего массива l oop через каждый элемент, проверяя, равен ли он соответствующему элементу в тестовом массиве. Для этого вы можете использовать .every()
метод .
let array = [['a']];
function includesArray(parentArray, testArray) {
for (let i = 0; i < parentArray.length; i++) {
if (parentArray[i].every(function(value, index) { return value === testArray[index]})) {
return true;
}
}
return false;
}
console.log(includesArray(array, ['a'])); //true
console.log(includesArray(array, ['b'])); //false