带有值的JavaScript Array.sort

时间:2016-09-12 13:03:39

标签: javascript arrays sorting

我有一个类似这样的数组:

var array = [
    'Black',
    'Black',
    'Silver',
    'Pink',
    'Black',
    'Purple',
    'Purple',
    'Black',
];

我想按值排序该数组。 例如,如果我选择按' Black' 进行排序,则会将所有黑色项目置于顶部。 有谁知道怎么做?

4 个答案:

答案 0 :(得分:0)



var list = [

    'silver',
    'black',

    'Black',
    'Black',
    'Silver',
    'Pink',
    'Black',
    'Purple',
    'Purple',
    'Black'
];


list.sort(function (shiftToTop) {
    return function comparator (a, b) {
        var
            compareValue;

        if (a === shiftToTop) {

            compareValue = -1;

        } else if (b === shiftToTop) {

            compareValue = 1;
        } else {
            compareValue = (

                   ((a > b) && 1)
                || ((a < b) && -1)
                || ((a === b) ? 0 : compareValue)
            );
        }
        return compareValue;
    };
}('Black'));


console.log(list);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

不使用排序功能的方法就是

&#13;
&#13;
var array = ['Black', 'Black', 'Silver', 'Pink', 'Black', 'Purple', 'Purple', 'Black'],
   sorted = array.reduce((p,c) => c === "Black" ? [c].concat(p): p.concat(c),[]);
console.log(sorted);
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

您可以传递一个函数进行排序,如https://jsfiddle.net/d5tkrpxo/

所示
ar.sort(function(a) {
    return a=="Black" ? -1 : 1;
});

-1会将项目推向开头,+1会向末尾移动,因为您有一个非常简单的请求,只需要进行一次比较。

答案 3 :(得分:-1)

您可以对自定义函数使用数组sort方法,而变量Black给出结果1,否则使用字符串比较函数对其余函数进行排序:

&#13;
&#13;
var array = [
    'Black',
    'Black',
    'Silver',
    'Pink',
    'Black',
    'Purple',
    'Purple',
    'Black',
];
console.info(array);

var sortBy = "Black";
array.sort(function(a, b){
  if(b == sortBy) {
    return 1;
  }
  return a.localeCompare(b);
});
console.info(array);
&#13;
&#13;
&#13;