新手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的布尔值,而不是从匹配元素的数组中返回对象。我在这里需要另一个功能来桥接我的逻辑吗?我错过了什么?任何帮助深表感谢!提前致谢!
答案 0 :(得分:0)
您需要为filter
方法提供函数回调。
const element = '0';
const array2 = array1.filter((arr1Elem) => array1.indexOf(element) !== -1);
dispatch({ type: SEARCH_RESULT_SUCCESS, payload: array2 });
});
};
};