Javascript проверить, существует ли значение в двух массивах, вернуть пропущенное значение - PullRequest
0 голосов
/ 10 апреля 2020

Хотелось бы знать, если отсутствует значение, которое отсутствует.

Array1: у вас есть эти значения в данный момент

['cloud:user', 'cloud:admin']

Array2: вам нужно иметь эти значения для продолжения

['cloud:user', 'cloud:admin', 'organization:user']

Текущий метод, который возвращает true или ложь Но я хотел бы знать, если значение отсутствует, то что отсутствует. Например: «организация: пользователь». Если ничего не пропущено, верните true.

let authorized = roles.every(role => currentResourcesResult.value.includes(role));

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Просто используйте метод filter и проверьте, является ли some элементов arr1 не равным элементу arr2 :

const missingValues = arr2.filter(f => !arr1.some(s => s ==f));

Пример:

let arr1 = ['cloud:user', 'cloud:admin']
let arr2 = ['cloud:user', 'cloud:admin', 'organization:user'];
const missingValues = arr2.filter(f => !arr1.some(s => s ==f));
console.log(missingValues);
0 голосов
/ 10 апреля 2020

Вы можете проверить это, используя Array.prototye.filter().

const domain = ['cloud:user', 'cloud:admin', 'organization:user'];
const data = ['cloud:user', 'cloud:admin'];

const notInDomain = domain.filter(item => data.indexOf(item) === -1);

if (notInDomain.length > 0) {
  console.log('Some values are not in the domain set');
}

console.log(notInDomain);

Обновление

Вы можете получить тот же результат, используя includes вместо indexOf.

const notInDomain = domain.filter(item => !data.includes(item));
...