JS 多字段拼接为字符串,并处理掉 null 的情况

根据多个字段,动态拼接显示 label 字符串,由于字段的值存在 null 的情况,我们又将如何将 null 从字符串中去除呢?

function getLabel(data) {
    const filed = ['taxCode', 'taxKindCode', 'itemName', 'itemSpec']
    function fn(item) {
        return filed.reduce((pre, cur, index) => {
            if (item[cur]) {
                return pre + ' - ' + item[cur]
            }
            return pre
        }, '')
    }
    return (data || []).map(item => fn(item))
}

优化代码

function getLabel(data) {
  const fields = ['taxCode', 'taxKindCode', 'itemName', 'itemSpec'];

  function formatField(item, field) {
    return item[field] ? ` - ${item[field]}` : '';
  }

  function combineFields(item) {
    return fields.map(field => formatField(item, field)).join('');
  }

  return (data || []).map(item => combineFields(item));
}

上述代码片段中,使用 formatField 用来格式化字段,combineFields 用来组合所有字段,且使用 map 和 join 方法更简洁地组合字段,减少了多次字符串拼接操作。

由于某些字段可能存在 null 的情况,拼接在字符串中显示不太好看,因此我们需要进一步数据,具体代码如下:

function getLabel(data) {
  const fields = ['taxCode', 'taxKindCode', 'itemName', 'itemSpec'];

  function combineFields(item) {
    return fields.map(field => item[field]).filter(value => value !== null && value !== '').join(' - ');
  }

  return (data || []).map(item => combineFields(item));
}

首先使用 map 方法将每个字符串的值提取到一个新数组中,然后使用 filter 方法过滤掉未定义的值,最后使用 join 方法将这些非空的值。这种方法避免 reduce 方法中显式初始值和 push 操作,使代码更简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值