用于解析复杂的javascript对象,只需要其中的部分属性,
通过match对象去解析出obj的值
不限深度
let matchValue=require('match-object-value')
// 参数
let ans=matchValue(obj,match)
obj 被解构的值
match 解构参照对象
ans 返回值 包含ans和groups两个属性
obj和match必须具有相同的结构,否则会报错
let obj = {
items: [
{
id: 1,
name: '小明',
contacts: {
qq: '123123',
phone: '0123456',
addr: '北京'
}
},
{
id: 2,
name: '小红',
contacts: {
qq: '456456',
phone: '0456789',
addr: '上海'
}
},
{
id: 3,
name: '小李',
contacts: {
qq: '789789',
phone: '0789123',
addr: '广州'
}
}
]
}
// 过滤掉其他不需要的属性
let ans = matchValue(obj, {
items: [
{
name: 1,
contacts: {
addr: 1
}
}
]
})
console.log(ans)
// {
// "ans": {
// "items": [
// {
// "name": "小明",
// "contacts": {
// "addr": "北京"
// }
// },
// {
// "name": "小红",
// "contacts": {
// "addr": "上海"
// }
// },
// {
// "name": "小李",
// "contacts": {
// "addr": "广州"
// }
// }
// ]
// },
// "groups": {}
// }
let ans = matchValue(obj, {
items: [
{
name: val => val + '同学', // 可以接受函数
contacts: {
addr: 1
}
}
]
})
// {
// "ans": {
// "items": [
// {
// "name": "小明同学",
// "contacts": {
// "addr": "北京"
// }
// },
// {
// "name": "小红同学",
// "contacts": {
// "addr": "上海"
// }
// },
// {
// "name": "小李同学",
// "contacts": {
// "addr": "广州"
// }
// }
// ]
// },
// "groups": {}
// }
以 __ 开头的属性将被视为集合,结果存放在groups中
let ans = matchValue(obj, {
items: [
{
contacts: {
__infos: 1, // 以__开头的属性将被视为集合,结果存放在groups中
addr: 1
}
}
]
})
// {
// "ans": {
// "items": [
// {
// "contacts": {
// "addr": "北京"
// }
// },
// {
// "contacts": {
// "addr": "上海"
// }
// },
// {
// "contacts": {
// "addr": "广州"
// }
// }
// ]
// },
// "groups": {
// "__infos": [
// {
// "qq": "123123",
// "phone": "0123456",
// "addr": "北京"
// },
// {
// "qq": "456456",
// "phone": "0456789",
// "addr": "上海"
// },
// {
// "qq": "789789",
// "phone": "0789123",
// "addr": "广州"
// }
// ]
// }
// }
let ans = matchValue(obj, {
items: [
{
contacts: {
__infos: val => val.addr, // 也可以接受函数
addr: 1
}
}
]
})
// {
// "ans": {
// "items": [
// {
// "contacts": {
// "addr": "北京"
// }
// },
// {
// "contacts": {
// "addr": "上海"
// }
// },
// {
// "contacts": {
// "addr": "广州"
// }
// }
// ]
// },
// "groups": {
// "__infos": [
// "北京",
// "上海",
// "广州"
// ]
// }
// }
match-object-value
1.0.2 • Public • PublishedPackage Sidebar
Install
npm i match-object-value
Weekly Downloads
4
Version
1.0.2
License
ISC
Unpacked Size
11.1 kB
Total Files
5