javascript - 当值为空/未定义时,排序函数会中断(React,javascript)
问题描述
我为我的数据集准备了一个排序函数:
const sortHelper = (key, order) => {
return (compare1, compare2) => {
if (!compare1.hasOwnProperty(key) || !compare2.hasOwnProperty(key)) {
return 0;
}
const varA = compare1[key].toString().toUpperCase();
const varB = compare2[key].toString().toUpperCase();
let comparison = 0;
if (varA > varB) {
comparison = 1;
} else if (varA < varB) {
comparison = -1;
}
return order === 'DESC' ? comparison * -1 : comparison;
};
};
export const sortData = (data, sortOrder) => {
if (!sortOrder) {
return data;
}
const { sortingCriteria, direction } = sortOrder;
return data.sort(sortHelper(sortingCriteria[0], direction));
};
不幸的是,当某个值为空或未定义时,它会中断。我试过这样:
const varA = compare1[key].toString().toUpperCase();
但它仍然打破。
解决方案
您可以为虚假值采用默认的空字符串。
const varA = (compare1[key] === 0 ? 0 : compare1[key] || '').toString().toUpperCase();
如果您不只需要字符串,您可以直接采用类型并使用空字符串作为不为零的假值的默认值。
const varA = compare1[key] === 0 ? 0 : compare1[key] || '';
推荐阅读
- git - Gradle 执行带引号的命令
- tensorflow - 如何从 keras mobilenet 保存创建和保存子模型?
- javascript - 使用函数返回道具不是返回道具
- amazon-web-services - 如何从我的本地计算机和其他区域的 EC2 实例访问我的 AWS MSK 托管 kafka 队列
- javascript - jest.fn() 被多次调用
- php - 我想捕获这条路线的ID
- javascript - Javascript RxJS如何取消订阅服务方法
- vba - 应用于 Word 修订的更改使两个段落合二为一
- airflow - Airflow ML 引擎包_URI
- xslt - If Condition 检查 XSLT 和 Mapping 中的字符串长度