我有一个类似这样的数组:
var array = [
'Black',
'Black',
'Silver',
'Pink',
'Black',
'Purple',
'Purple',
'Black',
];
我想按值排序该数组。 例如,如果我选择按' Black' 进行排序,则会将所有黑色项目置于顶部。 有谁知道怎么做?
答案 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;
答案 1 :(得分:0)
不使用排序功能的方法就是
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;
答案 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
,否则使用字符串比较函数对其余函数进行排序:
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;