Равенство массива объекта независимо от индекса по значению, а не по ссылке - PullRequest
0 голосов
/ 19 сентября 2018

Я использую следующие версии:

"jasmine-core": "~2.8.0", 
"jasmine-spec-reporter": "~4.2.1", 
"karma-jasmine": "~1.1.0", 
"karma-jasmine-html-reporter": "^0.2.2", 
"@types/jasmine": "~2.8.3",

Называй меня глупым, но мне это нужно.Равенство по значению, а не по ссылке

function isEqual(var1, var2) {
  //....
  // return true or false
}

Тест:

isEqual(1,1) // true
isEqual("Test", "Test") // true
isEqual([1,2,3], [3,2,1]) // true   => irrespective of array index
isEqual({a:1, b:2}, {b:2, a:1}) // true
isEqual([{a:1}, {b:2}], [{b:2}, {a:1}]) // true
isEqual([1,2, {a:{b:2}}], [2,1, {a:{b:2}}]) // true
isEqual([{a:[1,2], b:10}], [{b:10, a:[2,1]}]) // true

Справочная информация: Я использую Jasmin для углового тестирования.Получение трудностей в проверке равенства объекта по значению.expect().toEqual() проверить равенство типа объекта.Я хочу сравнить массив объектов независимо от индекса массива.

Что я получу:

expect([{ a: 1 }, { b: 2 }]).toEqual([{ a: 1 }, { b: 2 }]); // true 
expect([{ a: 1 }, { b: 2 }]).toEqual([{ b: 2 }, { a: 1 }]); // false 

Что я хочу:

expect([{ a: 1 }, { b: 2 }]).toEqual([{ a: 1 }, { b: 2 }]); // true 
expect([{ a: 1 }, { b: 2 }]).toEqual([{ b: 2 }, { a: 1 }]); // true

1 Ответ

0 голосов
/ 19 сентября 2018

Попробуйте toDeepEqual

expect([{ a: 1 }, { b: 2 }]).toDeepEqual([{ a: 1 }, { b: 2 }]);
expect([{ a: 1 }, { b: 2 }]).toDeepEqual([{ b: 2 }, { a: 1 }]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...