我有以下代码:
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 ",
...
}
在构建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
}