【发布时间】:2014-02-02 01:39:11
【问题描述】:
所以最近我在做节点学校挑战, 任务如下:
返回一个接受有效用户列表的函数,并返回一个返回 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。 这是一个例子:http://s8.postimg.org/ql8df5iat/Screen_Shot_2014_02_01_at_5_32_07_PM.png
但是,我已经阅读了 MDN 示例一段时间,但似乎无法理解为什么这个解决方案有效!有人可以一步一步地引导我了解这里实际发生的事情吗?为什么这行得通? every() 和 some() 方法如何处理数组长度的差异?等等
-谢谢
【问题讨论】:
-
如果每个提交的用户至少有一个具有相同 id 的 goodUser,则该函数返回 true。
标签: javascript arrays object functional-programming compare