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
开始,因为 Set
的 has
函数是要求(根据 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 参数本身,尽管上面的实现可能会让初学者更易读。
我有两种不同类型的数组
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
开始,因为 Set
的 has
函数是要求(根据 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 参数本身,尽管上面的实现可能会让初学者更易读。