Now I have such code:
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);
}
and I want to sort such array:
[
{
article: 'Some New Zarticle',
isValid: false
},
{
article: 'Some New Article',
isValid: false
},
{
article: 'Some New Zzarticle',
isValid: true
},
]
as result I want to see such array:
[
{
article: 'Some New Zzarticle',
isValid: true
},
{
article: 'Some New Article',
isValid: false
},
{
article: 'Some New Zarticle',
isValid: false
},
]
So: I need to have some kind of two arrays: first one, and second one (one with 'isValid', other without) and both of them should be sorted by 'article'. Is this possible to do somehow? I tried also this way:
someArray.sort((a, b) => {
if (a.isValid === b.isValid) {
return b.isValid - a.isValid;
} else {
return a.article.toLowerCase().localeCompare(b.article.toLowerCase());
}
})
but it's not working as I want it...
sortArticles()function creates a new array whilesomeArray.sort()mutates the input.