我在尝试创建一个JavaScript函数从对象数组中按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
。
我的错误在哪里?
答案 0 :(得分:1)
因为您的函数正在返回undefined
,并且您将其分配给singlePost
。您可以在下面查看。
findById(posts, 2);
console.log(singlePost); // This will console.log the value of singlePost
答案 1 :(得分:1)
您正在设置变量而函数未返回任何内容,因此将函数内的变量分配替换为return
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);
答案 2 :(得分:0)
当然,该函数未返回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);