isEmpty
检查值是否为空(null、undefined、空字符串、空数组、空对象等)。
语法
typescript
isEmpty(value: any): boolean
参数
value
(any): 要检查的值
返回值
boolean
: 如果值为空返回 true,否则返回 false
示例
基本用法
typescript
import { isEmpty } from 'radash'
isEmpty(null) // true
isEmpty(undefined) // true
isEmpty('') // true
isEmpty([]) // true
isEmpty({}) // true
isEmpty(0) // false
isEmpty('hello') // false
isEmpty([1, 2, 3]) // false
isEmpty({ key: 'value' }) // false
处理字符串
typescript
import { isEmpty } from 'radash'
isEmpty('') // true
isEmpty(' ') // true (只包含空格)
isEmpty('hello') // false
isEmpty('0') // false
isEmpty('false') // false
处理数组
typescript
import { isEmpty } from 'radash'
isEmpty([]) // true
isEmpty([null]) // false
isEmpty([undefined]) // false
isEmpty([1, 2, 3]) // false
isEmpty(['']) // false
处理对象
typescript
import { isEmpty } from 'radash'
isEmpty({}) // true
isEmpty({ key: 'value' }) // false
isEmpty({ null: null }) // false
isEmpty({ undefined: undefined }) // false
处理数字
typescript
import { isEmpty } from 'radash'
isEmpty(0) // false
isEmpty(1) // false
isEmpty(-1) // false
isEmpty(NaN) // false
isEmpty(Infinity) // false
处理布尔值
typescript
import { isEmpty } from 'radash'
isEmpty(true) // false
isEmpty(false) // false
处理函数
typescript
import { isEmpty } from 'radash'
isEmpty(() => {}) // false
isEmpty(function() {}) // false
isEmpty(async () => {}) // false
处理日期
typescript
import { isEmpty } from 'radash'
isEmpty(new Date()) // false
isEmpty(new Date('invalid')) // false
处理Map和Set
typescript
import { isEmpty } from 'radash'
isEmpty(new Map()) // true
isEmpty(new Map([['key', 'value']])) // false
isEmpty(new Set()) // true
isEmpty(new Set([1, 2, 3])) // false
处理正则表达式
typescript
import { isEmpty } from 'radash'
isEmpty(/pattern/) // false
isEmpty(new RegExp('pattern')) // false
处理Symbol
typescript
import { isEmpty } from 'radash'
isEmpty(Symbol()) // false
isEmpty(Symbol('description')) // false
处理类实例
typescript
import { isEmpty } from 'radash'
class Example {
constructor() {
this.value = 'test'
}
}
isEmpty(new Example()) // false
isEmpty(new Date()) // false
isEmpty(new Array()) // true
isEmpty(new Object()) // true
表单验证
typescript
import { isEmpty } from 'radash'
function validateForm(data: any) {
const errors: string[] = []
if (isEmpty(data.name)) {
errors.push('姓名不能为空')
}
if (isEmpty(data.email)) {
errors.push('邮箱不能为空')
}
if (isEmpty(data.hobbies)) {
errors.push('爱好不能为空')
}
return errors
}
const formData = {
name: '',
email: 'alice@example.com',
hobbies: []
}
const errors = validateForm(formData)
// ['姓名不能为空', '爱好不能为空']
API响应处理
typescript
import { isEmpty } from 'radash'
async function fetchData() {
const response = await fetch('/api/users')
const data = await response.json()
if (isEmpty(data)) {
throw new Error('没有数据返回')
}
return data
}
try {
const users = await fetchData()
console.log('用户数据:', users)
} catch (error) {
console.error('获取数据失败:', error.message)
}
配置验证
typescript
import { isEmpty } from 'radash'
function validateConfig(config: any) {
const requiredFields = ['apiKey', 'baseUrl', 'timeout']
const missingFields = []
for (const field of requiredFields) {
if (isEmpty(config[field])) {
missingFields.push(field)
}
}
if (missingFields.length > 0) {
throw new Error(`缺少必需配置: ${missingFields.join(', ')}`)
}
return config
}
const config = {
apiKey: '',
baseUrl: 'https://api.example.com',
timeout: 5000
}
try {
validateConfig(config)
} catch (error) {
console.error('配置验证失败:', error.message)
// 输出: 配置验证失败: 缺少必需配置: apiKey
}
数据清理
typescript
import { isEmpty } from 'radash'
function cleanData(data: any) {
const cleaned: any = {}
for (const [key, value] of Object.entries(data)) {
if (!isEmpty(value)) {
cleaned[key] = value
}
}
return cleaned
}
const rawData = {
name: 'Alice',
email: '',
phone: null,
address: undefined,
hobbies: [],
notes: ' '
}
const cleanedData = cleanData(rawData)
// { name: 'Alice', notes: ' ' }
条件渲染
typescript
import { isEmpty } from 'radash'
function renderUserProfile(user: any) {
if (isEmpty(user)) {
return '<div>用户不存在</div>'
}
if (isEmpty(user.avatar)) {
return `
<div>
<h1>${user.name}</h1>
<p>默认头像</p>
</div>
`
}
return `
<div>
<h1>${user.name}</h1>
<img src="${user.avatar}" alt="头像" />
</div>
`
}
递归检查
typescript
import { isEmpty } from 'radash'
function deepIsEmpty(obj: any): boolean {
if (isEmpty(obj)) {
return true
}
if (Array.isArray(obj)) {
return obj.every(item => deepIsEmpty(item))
}
if (typeof obj === 'object' && obj !== null) {
return Object.values(obj).every(value => deepIsEmpty(value))
}
return false
}
const nestedData = {
level1: {
level2: {
level3: []
}
}
}
deepIsEmpty(nestedData) // true
注意事项
- 空值检查: 检查 null、undefined、空字符串、空数组、空对象
- 空格字符串: 只包含空格的字符串被认为是空的
- 数字: 0 不被认为是空的
- 布尔值: false 不被认为是空的
与其他函数的区别
isEmpty
: 检查值是否为空isNull
: 只检查 nullisUndefined
: 只检查 undefinedisString
: 检查是否为字符串
性能
- 时间复杂度: O(1)
- 空间复杂度: O(1)
- 适用场景: 数据验证、表单处理、API响应检查