Javascript JS:按两个字段对数组排序
现在我有了这样的代码:Javascript JS:按两个字段对数组排序,javascript,sorting,ecmascript-6,Javascript,Sorting,Ecmascript 6,现在我有了这样的代码: sortArticles = (someArray) => { const result = []; let isValid = someArray.filter(item => item.isValid); let isInvalid = someArray.filter(item => !item.isValid); valid = funcSortArrayOfObjByK
sortArticles = (someArray) => {
const result = [];
let isValid = someArray.filter(item => item.isValid);
let isInvalid = someArray.filter(item => !item.isValid);
valid = funcSortArrayOfObjByKey(arrayChecked, 'article');
invalid = funcSortArrayOfObjByKey(arrayUnchecked, 'article');
// funcSortArrayOfObjByKey - is a function to sort, a kind of lodash implementation without unnecessary dependency
return result.concat(valid).concat(invalid);
}
我想对这样的数组进行排序:
[
{
article: 'Some New Zarticle',
isValid: false
},
{
article: 'Some New Article',
isValid: false
},
{
article: 'Some New Zzarticle',
isValid: true
},
]
[
{
article: 'Some New Zzarticle',
isValid: true
},
{
article: 'Some New Article',
isValid: false
},
{
article: 'Some New Zarticle',
isValid: false
},
]
因此,我希望看到这样的阵列:
[
{
article: 'Some New Zarticle',
isValid: false
},
{
article: 'Some New Article',
isValid: false
},
{
article: 'Some New Zzarticle',
isValid: true
},
]
[
{
article: 'Some New Zzarticle',
isValid: true
},
{
article: 'Some New Article',
isValid: false
},
{
article: 'Some New Zarticle',
isValid: false
},
]
所以:我需要有两个数组:第一个和第二个(一个带'isValid',另一个不带),它们都应该按'article'排序。这有可能吗?
我也试过这样做:
someArray.sort((a, b) => {
if (a.isValid === b.isValid) {
return b.isValid - a.isValid;
} else {
return a.article.toLowerCase().localeCompare(b.article.toLowerCase());
}
})
但它没有按我的要求工作…您的分支已反转:
someArray.sort((a, b) => {
if (a.isValid != b.isValid) {
// ^^
return b.isValid - a.isValid;
} else {
return a.article.localeCompare(b, undefined, { sensitivity: 'base' });
}
})
我能够使用此方法根据isValid then文章对数组进行排序
someArray.sort(function(a, b) {
if (a.isValid === b.isValid) {
return a.article.localeCompare(b.article);
} else {
return (a.isValid) ? -1 : 1;
}
});
请注意,您的
sortArticles()?哪个字段可能会丢失,您想如何处理它?@brabertaser19当然最简单的修复方法是让您的对象始终有效,只需在排序之前添加字段。例如,isValid可以是未定义的(当然,通常不会发生……但是)@brabertaser19但是什么?让它永远不会发生。如果希望排序处理isValid
值,而不是true
和false
,则需要调整排序以明确执行此操作。