Использование метода .find не возвращает объект из проанализированного JSON

#javascript #vue.js

#javascript #vue.js

Вопрос:

Я использую Vue.js 3 но я не думаю, что это связано с моей проблемой. Я вызываю localStorage, чтобы получить массив объектов post в формате JSON, проанализировать его и использовать идентификатор для поиска сообщения. Я без проблем получаю идентификатор из маршрута, но выполняю поиск в проанализированном массиве.find возвращает значение undefined .

Файл Post.vue

     created() {
        this.postId = this.$route.params.id;
        console.log("******    POST ID *********");
        console.log(this.postId);

        var posts = JSON.parse(localStorage.getItem("posts"));
        console.log("******    POSTS ARRAY *********");
        console.log(posts);

        this.post = posts.find(post => post.id === this.postId);
        console.log("****** POST *********");
        console.log(this.post);
        
    }
  

Вот журнал консоли

Комментарии:

1. В Javascript === сравнивает тип данных, а также значение. Поэтому вам нужно использовать == для сравнения строковых и числовых значений.

Ответ №1:

Тип this.postId — string, а тип идентификатора каждого объекта в posts массиве — number . Поэтому вы можете использовать == вместо === . Или измените тип this.postId на число с помощью parseInt .

Комментарии:

1. Вот и все! как мне пометить вопрос как ответ? это мой первый вопрос здесь

2. Вы можете найти галочку под кнопками upvote / downvote .