Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2018, 16:53
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 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);
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2018, 16:56
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

для такого сравнения true вернется только если обе переменные ссылаются на один объект
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2018, 16:58
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

alert([1,2]==[1,2])


a = [1,2]
b=a;
alert(a==b)
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2018, 16:59
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

А как сравнить равен ли получeнный массив [5, 4, 3, 2]?( str == [5, 4, 3, 2])
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2018, 17:01
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

Дело в этом:
it("range() should return [5, 4, 3, 2]", function() {
assert.equal( range(), [5, 4, 3, 2] );
});
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2018, 17:01
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 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]));
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2018, 17:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 26.04.2018, 17:14
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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()));
Ответить с цитированием
  #9 (permalink)  
Старый 26.04.2018, 17:20
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

alert(''+[1,2]==[1,2]+'')
Ответить с цитированием
  #10 (permalink)  
Старый 26.04.2018, 18:10
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему массивы не объединяются? DivMan Элементы интерфейса 7 01.08.2016 09:10
Почему не работает this в setInterval? menscool Общие вопросы Javascript 1 07.10.2015 06:46
Почему некоторые операторы возвращают значения, а не ссылки? dump Общие вопросы Javascript 15 25.07.2012 17:28
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
Объясните почему не работает??? San4az Общие вопросы Javascript 2 11.05.2010 14:31