Как мне преобразовать словарь из localStorage в массив объектов в Vue? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь преобразовать словарь из localStorage в массив объектов. Мне нужно, чтобы использовать функцию .filter(), но я получаю TypeError, когда я конвертирую его.

Это показывает, что this.savedNews является массивом в консоли Vue, но проверка типа с Array.isArray() возвращает false. Также typeof() дает разные результаты (см. Ниже):

  data() {
    return {
      savedNews: Array // -> case 1
     //savedNews: []  ->  case2 
    }
  },
  mounted() {

    console.log(typeof(this.savedNews)) 
    // case1 -> returns 'function'
    // case 2 -> returns 'object'

    if(localStorage.savedNews){
      let storedSavedNews = JSON.parse(localStorage.getItem('savedNews'))
      this.savedNews = Object.keys(storedSavedNews).map((key) => {
          return storedSavedNews[key]
      })
    }
  },
  computed: {
    filteredSavedNews() {

        console.log(typeof(this.savedNews))
        // case 1 -> returns 'function', then 'object'
        // case 2-> 'object', 'object'

        return this.savedNews
    }
  },

1 Ответ

0 голосов
/ 23 апреля 2020

Если вы инициализируете с savedNews: Array, это просто функция; Поскольку это не экземпляр объекта Array, это конструктор.

typeOf(Array)       // function  (It is constructor of Array)
typeOf(new Array()) // Object    (Instance of Array)
typeOf([])          // Object    (Instance of Array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...