Почему массивы не равны
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, время: 15:56. |