😱 基于 URLSearchParams 的查询参数处理工具。 项目地址

安装

1
npm install wow-query

构造方法

new Query(query: QueryData | string, mappingTable?: Dictionary)

1
2
3
4
5
new Query('a=1&b=2&a=3')
new Query({
a: ['1', '3'],
b: '2',
})

mappingTable 参见 mapping

API

toString (): string

转 Query 字符串

1
2
// 返回:'a=1&b=2'
new Query({ a: '1', b: '2' }).toString()

toObject<T = QueryData> (): T

转 Query 对象

1
2
// 返回:{a: '1', b: '2'}
new Query('a=1&b=2')

get<T extends QueryValue> (name: string): T

获取指定字段值

1
2
3
4
5
const query = new Query('a=1&b=2&b=3')
// 返回: '1'
query.get('a')
// 返回: ['2', '3']
query.get('b')

set (name: string, value: QueryValue): Query

修改/添加字段

1
2
3
4
5
// 返回: 'a=2&b=3'
new Query({ a: '1' })
.set('a', '2')
.set('b', '3')
.toString()

delete (name: string): Query

删除字段

1
2
// 返回:{b: '3'}
new Query('a=1&a=2&b=3').delete('a').toJson()

has (name: string): boolean

是否包含某字段

1
2
3
4
5
const query = new Query('a=1')
// 返回: true
query.has('a')
// 返回: false
query.has('b')

someOf (names: string[]): Query

获取部分字段

1
2
// 返回:'c=3'
new Query('a=1&b=2&c=3').someOf(['a', 'b']).toString()

toCamelCaseKeys (): Query

将 kebab-case 风格的 Query 字段转成 CamelCase 风格

1
2
// 返回: {userId: 'abc'}
new Query('user-id=abc').toCamelCaseKeys().toJson()

toKebabCaseKeys (): Query

将 CamelCase 风格的 Query 字段转成 kebab-case 风格

1
2
// 返回: 'user-id=abc'
new Query({ userId: 'abc' }).toKebabCaseKeys().toString()

mapping (table: Dictionary<string>)

通过传入一个字段映射表来修改 Query 字段

1
2
3
const query = new Query({ a: ['1', '2'], b: '3', c: '4' })
// 返回: 'x=1&x=2&y=3&c=4'
query.mapping({ a: 'x', b: 'y' }).toString()

 评论