过滤对象的Vuex状态数组返回空数组

时间:2020-07-01 16:16:48

标签: javascript vue.js vuejs2 vuex

我处于从https://jsonplaceholder.typicode.com/todos/接收数据的状态。我想根据状态completed:truecompleted:false过滤数据。

我有以下方法来过滤数组:

filterByStatus(status) {
  const filteredResults = this.allTodos.filter(todo => todo.completed == status)
  console.log(filteredResults)
}

在这里,我收到truefalse作为方法的参数。但是console.log(filteredResults)返回一个空数组。

filterByStatus(status) {
  let filteredResults = [];
  this.allTodos.map(item => {
    if (item.completed == status) {
      filteredResults.push(item);
    }
  });
  console.log(filteredResults);
}

我也尝试过map方法,但结果是一个空数组。

我有console.log(this.allTodos)的结果是:

 [{…}, {…}, {…}, {…}, {…}, __ob__: Observer]

这是观察者的原因吗?

1 个答案:

答案 0 :(得分:0)

我不认为您应该在这里使用地图:

        this.allTodos.map(item => {
          if (item.completed == status) {
             filteredResults.push(item);
          }
        });

而是forEach

        this.allTodos.forEach(item => {
          if (item.completed == status) {
             filteredResults.push(item);
          }
        });