Почему 2 одинаковых массива не равны?
let a = [1, 2, 3];
let b = [1, 2, 3];
console.log(a == b); //false
Почему 2 одинаковых массива не равны?
let a = [1, 2, 3];
let b = [1, 2, 3];
console.log(a == b); //false
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Операторы_сравнения
Сравнение объекта истинно лишь в том случае, если оба операнда ссылаются на один и тот же объект в памяти
Обновлено, спасибо ( Suvitruf ) за замечание
для сравнения массивов (НЕ)достаточно привести к строке
console.log(a.toString() == '' + b); // true
[ 1, 2 ].toString() == [ '1,2' ].toString() // true
для сравнения объектов можно воспользоваться этим способом
console.log(JSON.stringify({
a: 'A'
}) == JSON.stringify({
a: 'A'
})); // true
console.log(JSON.stringify([ 1, 2 ]) == JSON.stringify([ '1, 2' ])); // false
let a = [1, 2, 3]
let b = [1, 2, 3]
console.log(a.toString() == '' + b); // true
console.log([1, 2].toString() == ['1,2'].toString()) // true
console.log(JSON.stringify({
a: 'A'
}) == JSON.stringify({
a: 'A'
})); // true
console.log(JSON.stringify([1, 2]) == JSON.stringify(['1, 2'])); // false
toString() - совсем...[ 1, 2 ].toString() == [ '1,2' ].toString() // true, что, как бы, не верно.
– Suvitruf - Andrei Apanasik
Aug 09 '18 at 18:57
Вы сравниваете ссылки. Для сравнения значений, нужно сравнивать элементы.
В ES6 можно так:
a.every( e => b.includes(e) );
С помощью underscorejs можно так:
_.isEqual(a, b);
for...
– Regent
Aug 09 '18 at 17:35
a.every( e => b.includes(e) )– Suvitruf - Andrei Apanasik Aug 09 '18 at 17:30