【问题标题】:Javascript check if value exsist in two arrays return missing valueJavascript检查两个数组中是否存在值返回缺失值
【发布时间】:2020-07-23 05:16:06
【问题描述】:
我想知道如果缺少某个值,则缺少哪个值。
Array1: 你现在有这些值
['cloud:user', 'cloud:admin']
Array2:您需要这些值才能继续
['cloud:user', 'cloud:admin', 'organization:user']
返回真或假的当前方法。但是我想知道如果缺少一个值,则缺少哪个值。例如:“组织:用户”。如果没有任何遗漏,则返回 true。
let authorized = roles.every(role => currentResourcesResult.value.includes(role));
【问题讨论】:
标签:
javascript
arrays
include
【解决方案1】:
只需使用filter 方法并检查arr1 的元素中的some 是否不 等于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);
【解决方案2】:
您可以使用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));