Javascript 如何按字母顺序对下拉菜单项进行排序?

Javascript 如何按字母顺序对下拉菜单项进行排序?,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,在的下拉菜单中是否有按字母顺序显示选项的方法 我知道数组可以简单地使用arr.sort进行排序。但是,如果我执行constoptions=[…].sort,那么我仍然会在下拉菜单中看到未排序的值 const options = [ {label:"B",value:8033.86}, {label:"A",value:483.93}, {label:"Z",value:1246.3}, {label:"C",value:145.0}, {label:"E",value:244

在的下拉菜单中是否有按字母顺序显示选项的方法

我知道数组可以简单地使用arr.sort进行排序。但是,如果我执行constoptions=[…].sort,那么我仍然会在下拉菜单中看到未排序的值

const options = [
  {label:"B",value:8033.86},
  {label:"A",value:483.93},
  {label:"Z",value:1246.3},
  {label:"C",value:145.0},
  {label:"E",value:244.5}
]

<Grid item xs={true}>
  <FormControl
      className={this.props.styles.formControl}
      margin="normal">
      <InputLabel shrink htmlFor="distanceTarget-label-placeholder">
          Target:
      </InputLabel>
      <Select
        onChange={(event) => this.props.handleChange("distanceTarget", event)}
        value={this.props.state.distanceTarget}
        input={<Input name="distanceTarget" id="distanceTarget-label-placeholder" />}
        displayEmpty="true"
        name="distanceTarget"
      >
      {options && options.length && options.map((option, i) => {
          return <MenuItem value={option.value} key={i}>{option.label}</MenuItem>
      })}
      </Select>
  </FormControl>
</Grid>

这里有一个简单的方法来对对象数组进行排序,您可以读取

常量选项=[ {label:B,value:8033.86}, {label:A,value:483.93}, {label:Z,value:1246.3}, {label:C,value:145.0}, {标签:E,值:244.5} ]
console.logoptions.sorta,b=>a.label>b.label?1:-1这里有一个对对象数组排序的简单方法,您可以读取

常量选项=[ {label:B,value:8033.86}, {label:A,value:483.93}, {label:Z,value:1246.3}, {label:C,value:145.0}, {标签:E,值:244.5} ]
console.logoptions.sorta,b=>a.label>b.label?1:-1材质UI是关于样式的,而不是逻辑。 首先,您需要对选项进行排序

    for (const item in options) {
     console.log(options[item].label)
    }

它的第一步。第二,你应该试试自己

材质UI是关于样式,而不是逻辑。 首先,您需要对选项进行排序

    for (const item in options) {
     console.log(options[item].label)
    }

它的第一步。第二,你应该试试自己

在处理一系列对象时,您需要知道是什么决定了哪一个首先出现:

function sortAlphabeticallyAscending(a,b){
    if(a.label < b.label) return -1;
    else if (a.label > b.label) return 1;
    else return 0;
}

options.sort(sortAlphabeticallyAscending);
基本上,如果你想说a的指数低于b,返回-1,即a排在第一位,如果你想说b排在第一位,返回1,如果你不想改变顺序,返回0


请参阅文档中的部分…

当您处理一组对象时,您需要说明是什么决定了哪一个首先出现:

function sortAlphabeticallyAscending(a,b){
    if(a.label < b.label) return -1;
    else if (a.label > b.label) return 1;
    else return 0;
}

options.sort(sortAlphabeticallyAscending);
基本上,如果你想说a的指数低于b,返回-1,即a排在第一位,如果你想说b排在第一位,返回1,如果你不想改变顺序,返回0


请参阅文档中的部分…

您必须定义排序逻辑,因为您的输入数组是一个对象数组

可以找到更多信息

常量选项=[ {label:B,value:8033.86}, {label:A,value:483.93}, {label:Z,value:1246.3}, {label:C,value:145.0}, {标签:E,值:244.5} ]; const objComparator=函数,b{ 如果a.标签b.标签{ 返回1; } 返回0; };
options.sortobjComparator 您必须定义排序逻辑,因为您的输入数组是一个对象数组

可以找到更多信息

常量选项=[ {label:B,value:8033.86}, {label:A,value:483.93}, {label:Z,value:1246.3}, {label:C,value:145.0}, {标签:E,值:244.5} ]; const objComparator=函数,b{ 如果a.标签b.标签{ 返回1; } 返回0; }; options.sortobjComparator;