Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:如何使用函数式编程比较两个对象数组?_Javascript_Arrays_Object_Functional Programming_Compare - Fatal编程技术网

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

javascript:如何使用函数式编程比较两个对象数组?,javascript,arrays,object,functional-programming,compare,Javascript,Arrays,Object,Functional Programming,Compare,最近我在做一个节点学校挑战赛, 任务如下: 返回获取有效用户列表的函数,并返回返回true的函数 如果原始用户列表中存在所有提供的用户 以下是解决方案: module.exports = function (goodUsers) { return function (submittedUsers) { return submittedUsers.every(function (submittedUser) { return goodUsers.so

最近我在做一个节点学校挑战赛, 任务如下:

返回获取有效用户列表的函数,并返回返回true的函数 如果原始用户列表中存在所有提供的用户

以下是解决方案:

   module.exports = function (goodUsers) {
   return function (submittedUsers) {
       return submittedUsers.every(function (submittedUser) {
           return goodUsers.some(function (goodUser) {
               return goodUser.id === submittedUser.id;
           });
       });
   };
};
基本上,它是一个函数,用于接收ID对象并将其与另一个对象进行比较。 如果第二个对象的ID在第一个对象中,则返回true。 下面是一个例子:

然而,我已经阅读了一段时间的MDN示例,似乎无法理解为什么这个解决方案有效!有人能一步一步地告诉我这里到底发生了什么吗?为什么这样做有效?every()和some()方法如何处理数组长度的差异?等


-谢谢

实际上,函数
每一个
一些
都不关心数组长度

each
只会对第一个数组的每个元素执行任意代码

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

==
这将在空值或未定义值的情况下“短路”

希望这有帮助


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

如果每个submittedUser至少有一个goodUser具有相同的id,则该函数将返回true。谢谢,现在它更有意义了!我同意循环,但我在练习函数式编程:P