Показать сообщение отдельно
  #1 (permalink)  
Старый 11.01.2018, 22:35
Интересующийся
Отправить личное сообщение для jtag Посмотреть профиль Найти все сообщения от jtag
 
Регистрация: 12.01.2016
Сообщений: 19

Как проверить на равенство два массива?
Всем добрый вечер. Имеется два массива с одинаковыми объектами только переставленными местами:

Как можно проверить что имеется один и тот же набор данных в обоих массивах независимо от порядка, написал такой код, можно как-то упростить все это?:

let arr1 = [{owner: "human1", phone: 111}, {owner: "human2", phone: 222}, {owner: "human3", phone: 333}];
let arr2 = [{owner: "human3", phone: 333}, {owner: "human1", phone: 111}, {owner: "human2", phone: 222}];

for (let i = 0; i < arr1.length; i++) {    
    for (let j = 0; j < arr2.length; j++) {
        if (arr1[i].phone === arr2[j].phone) {          //если встречаются равные элементы, добавляю свойство done='ok'
            arr1[i].done = "ok";
            arr2[j].done = "ok";
        }
    }
}
let flag = false;
for (let i = 0; i < arr1.length; i++) {                                  //если у всех элементов из двух масивов есть свойство done='ok', то массивы равны
    if (arr1[i].done === "ok" && arr2[i].done === "ok") {
        flag = true;
    } else {
        flag = false;
        break;
    }
}

flag ? console.log("равно") : console.log("не равно");

Последний раз редактировалось jtag, 11.01.2018 в 23:18.
Ответить с цитированием