我有一个像这样的数组:
var data = ['High', 'Low', 'Medium'];
此数据数组是动态创建的。因此,它可能具有全部3个值,也可能只有2个值或1个值。
不管数组中的值如何,我都希望数组以这种方式排序:
var sortedArray = ['High', 'Medium', 'Low']
我尝试过这样的事情:
var sortedArray = []
for(var 0;i<data.length;i++)
{
if(data[i] = 'High')
{
sortedArray.push('High');
}
else if(data[i] = 'Medium')
{
sortedArray.push('Medium');
}
else if(data[i] = 'Low')
{
sortedArray.push('Low');
}
}
我们如何实现?
答案 0 :(得分:1)
您可以从已排序的完整数组开始,然后filter淘汰data
中没有的元素。
var data = ['Low', 'High'];
var sortedArray = ['High', 'Medium', 'Low'].filter( el => data.includes( el ) );
console.log( sortedArray );
答案 1 :(得分:0)
var data = ['High', 'Low', 'Medium'];
// create a dictionary to map each possible value
var map = {High: 3, Medium: 2, Low: 1, Default:0 };
// then sort
var sorted = data.sort((a,b)=>(map[a]||map.Default)>(map[b]||map.Default)?-1:1);
console.log(sorted);