Если вы хотите проверить, что массивы объектов для равенства и порядка не имеют значения, то есть
areEqual([{id: "0"}, {id: "1"}], [{id: "1"}, {id: "0"}]) // true
, вы должны сначала отсортировать массивы. lodash имеет все необходимые инструменты, объединив sortBy
и isEqual
:
// arr1 & arr2: Arrays of objects
// sortProperty: the property of the object with which you want to sort
// Note: ensure every object in both arrays has your chosen sortProperty
// For example, arr1 = [{id: "v-test_id0"}, {id: "v-test_id1"}]
// and arr2 = [{id: "v-test_id1"}, {id: "v-test_id0"}]
// sortProperty should be 'id'
function areEqual (arr1, arr2, sortProperty) {
return _.areEqual(_.sortBy(arr1, sortProperty), _.sortBy(arr2, sortProperty))
}
EDIT: Поскольку sortBy
возвращает новый массив, есть не нужно клонировать ваши массивы перед сортировкой. Исходные массивы не будут мутированы.
Обратите внимание, что для lodash's isEqual
порядок имеет значение. Вышеприведенный пример вернет false
, если sortBy
не применяется к каждому массиву в первую очередь.