#javascript
На этот вопрос уже даны ответы здесь: Преобразование скалярных типов при сравнении JavaScript (2 ответа) Закрыт 2 года назад. Почему 2 одинаковых массива не равны? let a = [1, 2, 3], b = [1, 2, 3]; console.log(a == b); //false
Ответы
Ответ 1
Почему 2 одинаковых массива не равны? 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Ответ 2
Вы сравниваете ссылки. Для сравнения значений, нужно сравнивать элементы. В ES6 можно так: a.every( e => b.includes(e) ); С помощью underscorejs можно так: _.isEqual(a, b);
Комментариев нет:
Отправить комментарий