JavaScript-任意排序

时间:2019-06-21 20:30:09

标签: javascript

我有一个像这样的数组:

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');
    }
}

我们如何实现?

2 个答案:

答案 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);