首页 > 解决方案 > 当值为空/未定义时,排序函数会中断(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();

但它仍然打破。

标签: javascriptreactjssorting

解决方案


您可以为虚假值采用默认的空字符串。

const varA = (compare1[key] === 0 ? 0 : compare1[key] || '').toString().toUpperCase();

如果您不只需要字符串,您可以直接采用类型并使用空字符串作为不为零的假值的默认值。

const varA = compare1[key] === 0 ? 0 : compare1[key] || '';

推荐阅读