繁体   English   中英

具有值的JavaScript Array.sort

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM