将 .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 });
});
};
};
这里是 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 });
});
};
};