Почему массивы не равны
function range() {
var str = []; var a = 5, b = 2, c = -1; for (a; a >= b; a += c) { str.push(a); } return str; } var str23 = [5, 4, 3, 2]; console.log(range() == str23); |
для такого сравнения true вернется только если обе переменные ссылаются на один объект
|
alert([1,2]==[1,2]) a = [1,2] b=a; alert(a==b) |
А как сравнить равен ли получeнный массив [5, 4, 3, 2]?( str == [5, 4, 3, 2])
|
Дело в этом:
it("range() should return [5, 4, 3, 2]", function() { assert.equal( range(), [5, 4, 3, 2] ); }); |
func=(a,b)=>{ b=b.sort(); return a.length == b.length? a.sort().every((el,i)=>el == b[i]):false; }; alert(func([12, 5, 8, 44, 130,],[12, 5, 8, 130, 44])); |
А вот так сравнятся - если одинаковые по значениям и по последовательности
function range() { var str = []; var a = 5, b = 2, c = -1; for (a; a >= b; a += c) { str.push(a); } return str; } var str23 = [5, 4, 3, 2]; alert(JSON.stringify(range()) == JSON.stringify(str23)); |
Если нужно сравнить по значениям, независимо от последовательности
function range() { var str = []; var a = 5, b = 2, c = -1; for (a; a >= b; a += c) { str.push(a); } return str; } var str23 = [5, 4, 2, 3]; alert(JSON.stringify(range().sort()) == JSON.stringify(str23.sort())); |
alert(''+[1,2]==[1,2]+'') |
j0hnik,
alert('1,2'==[1,2]+'') :) alert(JSON.stringify('1,2') == JSON.stringify([1,2])); |
Часовой пояс GMT +3, время: 20:37. |