Сравнение между двумя значениями JavaScript Objects / Arrays - PullRequest
0 голосов
/ 01 октября 2019

Есть кое-что неясное для меня, о чем я хотел бы спросить вас. Допустим, у меня есть 2 вызова API. Один возвращает с массивом:

array1 = [H, 3, 2]

Второй возвращает с объектом:

array2 = [
{0: 1, 1: 1, 2: 1},
{0: 3, 1: 2, 2: 1},
{0: 'p', 1: 2, 2: 4},
{0: 'r', 1: 2, 2: 2},
{0: 'h', 1: 2, 2: 3}   ];

Как сравнить значения двух? Например, значения array2 [4] - это H, 2, 3, которые равны значениям array1 H, 3, 2, но в другом порядке. Как я могу сравнить только значения, а не их порядок и получить логический результат как истинный, как только найдены в значениях array2, которые равны array1. Кстати, я использую Angular + TypeScript.

Надеюсь, кто-нибудь может помочь мне с этой проблемой.

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

let array1 = ['h', 3, 2];
let array2 = [
  {0: 1, 1: 1, 2: 1},
  {0: 3, 1: 2, 2: 1},
  {0: 'p', 1: 2, 2: 4},
  {0: 'r', 1: 2, 2: 2},
  {0: 'h', 1: 2, 2: 3}
];
function compare(a1, a2) {
  for (i in a2) {
    if (a1.sort() === Object.values(i).sort()) {
      return true;
    }
  }
  return false;
}
console.log(compare(array1, array2));
0 голосов
/ 01 октября 2019

Множество способов сделать это, проще всего, на мой взгляд, это отсортировать, присоединиться к нему и сделать сравнение строк.

array1 = ['h', 3, 2]

array2 = [
  {0: 1, 1: 1, 2: 1},
  {0: 3, 1: 2, 2: 1},
  {0: 'p', 1: 2, 2: 4},
  {0: 'r', 1: 2, 2: 2},
  {0: 'h', 1: 2, 2: 3}
];

var test = array1.sort().join()
var result = array2.some(obj => Object.values(obj).sort().join() === test)
console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...