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

时间:2020-07-19 18:20:37

标签: javascript find

我在尝试创建一个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

我的错误在哪里?

3 个答案:

答案 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);