首页 > 解决方案 > 反应原生:在我的示例中,按字母顺序对选择器中的“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>

标签: javascriptreactjsreact-nativelodash

解决方案


你必须使用Array.prototype.sort()

它接受比较器函数作为参数 -

{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(...);

推荐阅读