繁体   English   中英

为什么使用 JavaScript 的 find() 方法返回未定义?

[英]Why does this use of JavaScript's find() method return undefined?

我在尝试制作 JavaScript function 时遇到了这个(意外的)错误,它通过 id 从对象数组中获取单个帖子:

 let posts = [ {id: 1, title: "Lorem ipsum dolor sit amet"}, {id: 2, title: "Numquam natus culpa non dignissimos dicta"}, {id: 3, title: "Tenetur culpa accusamus"} ]; let singlePost; function findById(array, id) { singlePost = array.find(function(post){ console.log(post.id); return post.id === id; }); } singlePost = findById(posts, 2); console.log(singlePost);

出于某种原因,我还没有弄清楚, console.log(singlePost)输出undefined

我的错误在哪里?

因为您的 function 返回undefined并且您将其分配给singlePost 你可以在下面检查。

findById(posts, 2);
console.log(singlePost); // This will console.log the value of singlePost

您正在设置一个没有 function 返回任何内容的变量,因此将 function 中的变量分配替换为返回

 let posts = [ {id: 1, title: "Lorem ipsum dolor sit amet"}, {id: 2, title: "Numquam natus culpa non dignissimos dicta"}, {id: 3, title: "Tenetur culpa accusamus"} ]; let singlePost; function findById(array, id) { return array.find(function(post){ return post.id === id; }); } singlePost = findById(posts, 2); console.log(singlePost);

当然,function 本身并没有返回singlePost 这是我应该做的:

 let posts = [ {id: 1, title: "Lorem ipsum dolor sit amet"}, {id: 2, title: "Numquam natus culpa non dignissimos dicta"}, {id: 3, title: "Tenetur culpa accusamus"} ]; let singlePost; function findById(array, id) { singlePost = array.find(function(post) { return post.id === id; }); return singlePost; } singlePost = findById(posts, 2); console.log(singlePost);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM