将 .indexOf() 与 .filter() 结合使用时出现问题

Trouble using .indexOf() with .filter()

这里是 javascript 和 es6 的新手。我正在使用 firebase 和 redux 构建一个 react-native 应用程序。我的一个动作创作者实际上只是一个搜索栏功能。我正在使用以下代码从 Firebase 获取数据:

export const searchResult = () => {
  const { currentUser } = firebase.auth();
  return (dispatch) => {
    firebase.database().ref(`/users/${currentUser.uid}/entries`)
      .on('value', snapshot => {
        const obj = snapshot.val();

这部分功能运行顺畅。然后我想把数据变成一个数组,而不仅仅是一些对象。

  const array1 = Object.keys(obj).map(function(key) {
    return [obj[key]];
});

再一次,这执行得很完美。这是我确定的下一段代码是错误的,只是不知道如何修复它。我想 return 根据搜索栏中的内容对 array1 进行筛选。在这里,我将搜索栏硬编码到元素(一旦我让代码工作,我就会切换它)。

      const element = '0';
      const array2 = array1.filter(array1.indexOf(element) !== -1);


        dispatch({ type: SEARCH_RESULT_SUCCESS, payload: array2 });
      });
  };
};

截至目前,我很确定这只是 returning 布尔值 false,而不是 returning 数组中匹配元素的对象。我在这里需要另一个功能来桥接我的逻辑吗?我错过了什么?任何帮助深表感谢!提前致谢!

您需要向 filter 方法提供回调函数。

  const element = '0';
  const array2 = array1.filter((arr1Elem) => array1.indexOf(element) !== -1);


    dispatch({ type: SEARCH_RESULT_SUCCESS, payload: array2 });
  });
  };
};