gpt4 book ai didi

javascript:如何使用函数式编程比较两个对象数组?

转载 作者:行者123 更新时间:2023-11-30 17:38:41 24 4
gpt4 key购买 nike

所以最近我在做一个节点学校挑战,这是任务:

返回一个接受有效用户列表的函数,并返回一个返回 true 的函数如果所有提供的用户都存在于原始用户列表中。

解决方法如下:

   module.exports = function (goodUsers) {
return function (submittedUsers) {
return submittedUsers.every(function (submittedUser) {
return goodUsers.some(function (goodUser) {
return goodUser.id === submittedUser.id;
});
});
};
};

基本上它是一个函数,它接受一个 ids 对象并将它与另一个对象进行比较。如果第二个对象的 ID 在第一个对象中,则返回 true。这是一个例子:http://s8.postimg.org/ql8df5iat/Screen_Shot_2014_02_01_at_5_32_07_PM.png

但是我已经阅读了一段时间的 MDN 示例,似乎无法理解为什么这个解决方案有效!有人可以一步一步地引导我了解这里实际发生的事情吗?为什么这行得通? every() 和 some() 方法如何处理数组长度的差异?等等

-谢谢

最佳答案

实际上 everysome 函数并不关心数组长度。

every 只会为第一个数组的 each 元素执行任意代码。

some 如果第二个数组中至少有一个具有相同 id' 的对象,则返回 true。

注意 === 这将在 null 或未定义值的情况下“短路”。

希望这对您有所帮助。

就我个人而言,我更喜欢双“for”循环语法,因为我认为它更具可读性。

关于javascript:如何使用函数式编程比较两个对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21506025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com