【发布时间】:2018-04-03 08:55:52
【问题描述】:
我正在学习高阶函数并且经常遇到麻烦,这是非常基本的,也许我没有正确理解参数..有什么原因导致这个解决方案不起作用?
// Sample Input:
// [
// { id: 42, name: 'Clojure' },
// { id: 43, name: 'Haskell' },
// { id: 44, name: 'Erlang' }
// ], 42
// Expected Output:
// { id: 42, name: 'Clojure' }
function findById (languages, id) {
return languages.filter(function(element) {
return element.id === id;
});
};
【问题讨论】:
-
如果你最后有
], 42,它会将输入分配给42 -
filter返回一个包含所有匹配元素的数组,如果没有匹配则返回一个空数组。如果您只想返回第一个匹配的对象,则使用find(返回第一个匹配的对象或null,如果没有匹配项)。 -
@Slai 我认为注释位是用于调用函数
findById的参数:数组将是languages参数,42将是id参数。 -
我认为在某些情况下,ID 的类型是不同的,所以有时
"42" === 42等于false。在这种情况下,我建议您在进行比较之前将所有内容解析为整数。如果你是 js 初学者,请阅读更多关于===的信息:)!
标签: javascript function object filter