javascript - 反应原生:在我的示例中,按字母顺序对选择器中的“reason.Name”进行排序的方法是什么?
问题描述
在我的示例中,按字母顺序对选择器中的“reason.Name”进行排序的方法是什么?如果我使用lodash那么我应该怎么做呢?
import { Picker } from '@react-native-picker/picker';
import _, { filter } from 'lodash';
<Picker
mode="dropdown"
selectedValue={selectedValue3}
style={{
placeholderTextColor: 'black',
transform: [{ scaleY: 1.2 }, { scaleX: 1.2 }],
}}
onValueChange={(itemValue, itemIndex) => {
dispatch(setCurrentTabInfoAction({ reason: foundReason?.Name }))
}}
>
{listReasons3.map((reason, i) => (
<Picker.Item label={reason.Name} value={reason.Code} key={i} />
))}
</Picker>
解决方案
它接受比较器函数作为参数 -
{listReasons3
.sort((a, b) => {
if (a.Name === b.Name) return 0;
if (a.Name > b.Name) return 1;
if (a.Name < b.Name) return -1;
})
.map((reason, i) => {
return <Picker.Item label={reason.Name} value={reason.Code} key={'picker' + i} />
})
}
(顺便说一句,键应该是字符串)
编辑:用 lodash -
_.sortBy(listReasons3, ['Name']).map(...);
推荐阅读
- python - 对于 leetcode.com 中的问题,如何在自己的 IDE 中正确输入自己的测试用例?
- java - 在itext7中,各种栏目文件或切换栏目文件
- python - 使用 BeautifulSoup 获取正确的标签(问题)
- django - 有没有办法以任何 url 模式添加 makemigration 和迁移?
- php - 两个单独的 MongoDB 集合将结果组合起来循环,没有关系
- javascript - 如果反应图中超过 2 个,则查看更多带有计数的按钮
- javascript - WebRTC - RTCDataChannel 的 onmessage 事件未触发
- heroku - Problem with deploying my first streamlit app on heroku
- javascript - 如何在switch语句中放置条件
- c++ - C ++逗号分隔的输入数组代码过早退出