Sweetalert 2-选择输入的排序选项

问题描述 投票:0回答:1

我有以下代码:



this.getdata((params.....).then((data) => {

    var selectOptions = [];
    for (let i = 0; i < data.length; i++) {
        selectOptions[data[i].id_calc] = data[i].surname + " " + data[i].name;
    }
    console.log(selectOptions )
    Swal.fire({
        position: 'top',
        icon: 'warning',
        title: 'Attenzione',
        text: 'Select something',
        input: 'select',
        inputPlaceholder: 'Seleziona',
        inputOptions: selectOptions,
        showCancelButton: true,
        confirmButtonText: 'insert',
        showLoaderOnConfirm: true,
        cancelButtonColor: '#d33',
        cancelButtonText: 'cancel',
        inputValidator: (value) => {
            return new Promise((resolve) => {
                if (value > 0 && value != "" && value != undefined && value != null) {
                    resolve()
                } else {
                    resolve('Select something')
                }
            })
        },
        preConfirm: (value) => {
            callAPI(value) 
        },
        allowOutsideClick: () => !Swal.isLoading()
    }).then((result) => {
        if (result.value) {
            console.log(result.value)
            Swal.fire({
                icon: 'success',
                title: 'OK',
                text: 'ok!'
            })
        }
    })
})

所以现在我有这样的东西:

selectOptions[1535] : bob,
selectOptions[1536]: lucas,
selectOptions[3445]: laura,
selectOptions[6443]: andrew,
ecc

并且选择输入按selectOptions id排序,但是我需要通过属性“ surename”对选择选项进行排序。

{
  6443: andrew,
  1535 : bob,
  3445: laura
  1536: lucas,
},


我该如何实现?我需要属性“ id_calc”在preConfirm部分中使用所选值调用函数(例如,如果我选择lucas,则需要使用1536值调用函数)

我的代码有效,但是选项没有按surename排序,有帮助吗?

ps.s。对不起,我的英语!

编辑:接收到的数据已经排序,但是当我创建选择选项时,将根据ID进行排序

selecOptions就像

{
  225: "NOOK TOM ",
  467: "BITE ABEL ",
  479: "DOG MAX ", 
  1234: "ALAN DENIS",
...
}

我需要

{
  1234: "ALAN DENIS",
  467: "BITE ABEL ",
  479: "DOG MAX ",
  225: "NOOK TOM ",
...
}
javascript reactjs sorting select sweetalert2
1个回答
0
投票

在构建selectOptions数组之前,对接收到的数据进行排序

this.getdata((params.....).then((data) => {

    // sort incoming collection
    var sortedData = data.sort((a, b) => a.surname > b.surname);

    // build selectOptions with the sorted data
    var selectOptions = [];
    for (let i = 0; i < sortedData.length; i++) {
        selectOptions[sortedData[i].id_calc] = sortedData[i].surname + " " + sortedData[i].name;
    }

    // rest of the code unchanged

}
© www.soinside.com 2019 - 2024. All rights reserved.