[英]JavaScript Array.sort with value
我有一个像这样的数组:
var array = [
'Black',
'Black',
'Silver',
'Pink',
'Black',
'Purple',
'Purple',
'Black',
];
我想按值对该数组排序。 例如,如果我选择按“黑色”排序,它将把所有“黑色”项目放在顶部。 有谁知道如何做到这一点?
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);
如果不使用排序,则完成此工作的功能方法将是
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);
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
您可以传递一个函数进行排序,如下所示:https://jsfiddle.net/d5tkrpxo/
ar.sort(function(a) {
return a=="Black" ? -1 : 1;
});
-1会将项目推到开头,而+1则推到结尾,因为您有一个非常简单的请求,只需要进行一次比较即可。
您可以在自定义函数中使用数组sort
方法,而变量为Black
Give as result 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.