Đẩy object giá trị falsy xuống cuối mảng trong JavaScript
Giả sử chúng ta có một mảng object như sau:
const array = [
{key: 'a', value: false},
{key: 'a', value: 100},
{key: 'a', value: null},
{key: 'a', value: 23} ];
Chúng ta cần viết một hàm JavaScript nhận vào một mảng như vậy và đặt tất cả các object có giá trị falsy cho thuộc tính "value" xuống cuối và sắp xếp tất cả các object khác theo thứ tự giảm dần theo thuộc tính "value".
Do đó, hãy viết mã cho hàm này:
Ví dụ
Mã thực hiện như sau:
const arr = [
{key: 'a', value: false},
{key: 'a', value: 100},
{key: 'a', value: null},
{key: 'a', value: 23} ];
const isValFalsy = (obj) => !obj.value && typeof obj.value !== 'number';
const sortFalsy = arr => {
arr.sort((a, b) => {
if(isValFalsy(a) && isValFalsy(b)){
return 0;
}
if(isValFalsy(a)){
return 1;
};
if(isValFalsy(b)){
return -1;
};
return b.value - a.value;
});
};
sortFalsy(arr);
console.log(arr);
Đầu ra
Kết quả trong console sẽ là:
[
{ key: 'a', value: 100 },
{ key: 'a', value: 23 },
{ key: 'a', value: false },
{ key: 'a', value: null } ]