javascript - 如何在本机反应中过滤数组?
问题描述
我是本机反应的新手,并且有一种情况,我试图将状态设置为另一个状态(数组)的过滤版本。使用当前代码,未过滤数组中的每个项目都被更改为过滤条件。如何将FilteredJobs 设置为仅包含“作业”,其中状态等于用户在 AppPicker 中选择的状态?
这是我的代码:
const [jobs, setJobs] = useState()
const [filteredJobs, setFilteredJobs] = useState()
const [status, setStatus] = useState()
const handleStatusChange = (item) => {
setFilteredJobs(
jobs.filter( job => job.status = item.label )
)
setStatus(item)
}
return (
<View style={defaultStyles.screenNoPadding}>
<AppTextInput placeholder='Search for a Job' icon='magnify' />
<View style={styles.filterContainer}>
<AppPicker
color='white'
selectedItem={category}
onSelectItem={item => handleCategoryChange(item)}
items={categories}
placeholder='Filter'
icon='apps' />
<AppPicker
color='white'
selectedItem={status}
onSelectItem={item => handleStatusChange(item)}
items={statuses}
placeholder='Status'
icon='apps' />
</View>
<FlatList
style={styles.list}
data={filteredJobs ? filteredJobs : jobs}
keyExtractor={job => job.id.toString()}
renderItem={({ item }) => (
<ListItem
company={item.company}
position={item.position}
status={item.status}
onPress={() => navigation.navigate('Details', { item })}
/>
)}
ItemSeparatorComponent={ListItemSeparator}
/>
</View>
);
提前致谢!请记住,作业是在加载组件时在 useEffect 中获取的。
解决方案
@guilherme 是对的,这是一个简单的错误,您分配而不是比较。养成使用===
比较字符串的习惯。
还有未来解决这些问题的方法:console.log
在你正在做的事情之前和之后,它不起作用。如果你有的话,它会很快跳出来。JSON.stringify
如果您要进入[Object object]
日志记录输出,则用于记录对象。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
推荐阅读
- spring-boot - SDK 不支持选定的 Java 版本 8(最多 7 个)
- java - 带有 xmlbean 绑定的 Axis2 maven 插件产生未知符号 innerType 和 addNew()
- c++ - 将 MPI_Comm 从 Fortran 传递到 C/C++ 会导致分段错误
- sql - 选择满足范围内所有日期的 where 子句的所有内容?
- c - 在嵌入式 c 中使用 printf
- php - 为什么php文件排他锁不起作用?
- android - 删除数据后房间重置增量密钥
- python - 即使通过 open() 函数也无法在 python 中打开文件
- sql - 根据日期返回一组连续记录的最小开始日期、最大结束日期和最新类别
- java - 使用 lo4j2 进行滚动时如何避免 FileSystemException(无法删除文件 - 由其他进程使用)?