26.04.2018, 16:53
|
Интересующийся
|
|
Регистрация: 26.04.2018
Сообщений: 26
|
|
Почему массивы не равны
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);
|
|
26.04.2018, 16:56
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
для такого сравнения true вернется только если обе переменные ссылаются на один объект
|
|
26.04.2018, 16:58
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
alert([1,2]==[1,2])
a = [1,2]
b=a;
alert(a==b)
|
|
26.04.2018, 16:59
|
Интересующийся
|
|
Регистрация: 26.04.2018
Сообщений: 26
|
|
А как сравнить равен ли получeнный массив [5, 4, 3, 2]?( str == [5, 4, 3, 2])
|
|
26.04.2018, 17:01
|
Интересующийся
|
|
Регистрация: 26.04.2018
Сообщений: 26
|
|
Дело в этом:
it("range() should return [5, 4, 3, 2]", function() {
assert.equal( range(), [5, 4, 3, 2] );
});
|
|
26.04.2018, 17:01
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
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]));
|
|
26.04.2018, 17:02
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
А вот так сравнятся - если одинаковые по значениям и по последовательности
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));
Последний раз редактировалось Dilettante_Pro, 26.04.2018 в 17:10.
|
|
26.04.2018, 17:14
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Если нужно сравнить по значениям, независимо от последовательности
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()));
|
|
26.04.2018, 17:20
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
alert(''+[1,2]==[1,2]+'')
|
|
26.04.2018, 18:10
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
j0hnik,
alert('1,2'==[1,2]+'')
alert(JSON.stringify('1,2') == JSON.stringify([1,2]));
Последний раз редактировалось Dilettante_Pro, 26.04.2018 в 18:14.
|
|
|
|