compact()

lodash的compact方法用于过滤数组中的虚假值,如空、undefined等。它遍历数组,只保留真值,即有意义的元素,将其余虚假值剔除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

_.compact(array)

每天更新一个lodash方法源码解析

compact翻译过来表示紧凑的、紧密的;在lodash中,它用于将数组中虚假值过滤掉,虚假值表示该值为空或者无意义,虚假值都包括:falsenull0" "undefinedNaN,与其对应的是真值,表示该值有意义,compact方法就是将上面所提到的虚假值过滤掉。

example:
_.compact([1, 0, true, false, 'a', null, {}, '', [], undefined, 'ok', NaN])
// [1, true, 'a', {}, [], 'ok']
源码解析:
// 过滤数组中的虚假值,虚假值包括:false、null、0、""、undefined、NaN
function compact(array) {
  let resIndex = 0
  // 定义result,一个空的数组
  const result = []

  // 如果array为null,直接返回一个空数组
  if (array == null) {
    return result
  }

  // 遍历数组array,判断数组中的每个元素是否为真值(转换成布尔值类型后是否为true,如果为true,表示真值,否则为虚假值),如果是真值,则添加到result数组中
  // 过滤掉虚假值的方法是根据其转换为布尔值类型后是否为true,false表示是虚假值,需要过滤掉
  for (const value of array) {
    // 对于非布尔值类型的会自动进行一次类型转换
    if (value) {
      result[resIndex++] = value
    }
  }
  // 最后返回结果result
  return result
}

实现思路:遍历数组,对数组中每个元素进行一个真值判断(非布尔值类型的会自动转换成布尔值类型进行判断),只有当元素为真值时才会被添加到最终返回的数组中。

2019/6/18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值