Return 如果第一个数组的元素在第二个嵌套数组的元素中则为布尔值

Return Boolean if element of first array is in element of second nested array

我有两种不同类型的数组 firstArrayObject = [{name: "sample", number: 23}, {name: "sample2", number: 25}].

第二个对象看起来像这样secondObject = {someAttribute: bla, numbers: [23, 26, 27, 28}

现在我想检查 firstArrayObject 提供的 number 字段中是否至少有一个是 而不是 secondObject 部分的 numbers 数组。如果不是部分,则停止搜索进程并且 return 为真。在提供的示例中,它应该 return 为真,因为“25”不是 secondObject.numbers

的一部分

我正在努力使用 es6 提供的所有不同方法,例如包含、过滤、一些。

希望有人能帮助我。

你在 some 的正确轨道上:

const result = firstArrayObject.some(
    ({number}) => !secondObject.numbers.includes(number)
);

const firstArrayObject = [{name: "sample", number: 23}, {name: "sample2", number: 25}];
const secondObject = {someAttribute: "bla", numbers: [23, 26, 27, 28]};

const result = firstArrayObject.some(({number}) => !secondObject.numbers.includes(number));

console.log(result);

那是说:“做一些(任何)firstArrayObject's elements match the condition 'number 不包含在数组 `secondObject.numbers' 中?”

我在那里使用了解构,但你不必:

const result = firstArrayObject.some(
    (element) => !secondObject.numbers.includes(element.number)
);

如果 secondObject.numbers 是一个非常大的数组,您可能会从对已知数字进行 Set 开始,因为 Sethas 函数是要求(根据 JavaScript 规范)比 includes:

的线性查找时间具有更好的性能
const numbers = new Set(secondObject.numbers);
const result = firstArrayObject.some(
    ({number}) => !numbers.has(number)
);

const firstArrayObject = [{name: "sample", number: 23}, {name: "sample2", number: 25}];
const secondObject = {someAttribute: "bla", numbers: [23, 26, 27, 28]};

const numbers = new Set(secondObject.numbers);
const result = firstArrayObject.some(
    ({number}) => !numbers.has(number)
);

console.log(result);

希望对您有所帮助!! 用于forEach 和includes 数组的功能。 很好的resource学习javascript数组函数。

var answer = false;
const firstArrayObject = [{name: "sample", number: 23}, {name: "sample2", number: 25}];

const secondObject = {someAttribute: "bla", numbers: [23, 26, 27, 28]};

function func(obj) {
    if(!secondObject.numbers.includes(obj.number)) answer = true;
}

firstArrayObject.forEach(func);
console.log(answer)

编辑:func 可以创建为 forEach 参数本身,尽管上面的实现可能会让初学者更易读。