javascript:如何使用函数式编程比较两个对象数组?
最近我在做一个节点学校挑战赛, 任务如下: 返回获取有效用户列表的函数,并返回返回true的函数 如果原始用户列表中存在所有提供的用户 以下是解决方案: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
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