使用带有.filter()的.indexOf()时遇到麻烦

时间:2017-11-19 04:12:50

标签: javascript ecmascript-6 indexof

新手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]];
});

再次,这完美地执行。它是我确定的下一段代码是错误的,只是不知道如何解决它。我想根据搜索栏中的内容返回array1的过滤器。在这里,我将搜索栏硬编码为元素(一旦我使代码工作,我将切换)。

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


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

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

1 个答案:

答案 0 :(得分:0)

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

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


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