path-object-builder
v1.0.4
Published
PathObjectBuilder
Downloads
54
Readme
PathObjectBuilder
在日常使用中我们经常会需要快速操作一个对象的某个属性。当层次比较深时,可通过路径来快速建立对象和获取对象会非常方便,同时为接口也可减少很多压力。
使用方法
安装
npm install path-object-builder
初始化
PathObjectBuilder([Objedt]
)
Objedt 为初始化的对象数据 非必填
//创建一个空对象
const builder = new PathObjectBuilder();
//创建一个空对象
const builder = new PathObjectBuilder({});
//创建一个{a:1}的对象
const builder = new PathObjectBuilder({ a: 1 });
设置及获取
// 设置初始数据
const builder = new PathObjectBuilder({...});
// 设置或替换数据可省略result
builder.foo = {bar:{value:'test'}}
// 设置数据
builder['<path>']=value
// 通过path获取数据
console.log(builder['<path>'])
// 通过object获取数据
console.log(builder.foo.bar.value) // return 'test'
<path>
:是一个以"."分隔的路径. 如果没有设置数据,则返回 null.数组可以以[]
表示.会榆次增加.如果需要修改指字数组中的数据可以指定索引如[12]
。
获取结果集
console.log(JSON.stringify(builder.result, null, 2));
方法
toString
返回 字符串 数据
console.log(builder.toString());
console.log(String(builder));
toJSON
返回 JSON 数据
console.log(builder.toJSON());
console.log(JSON.parse(builder));
测试代码
0
const builder = new PathObjectBuilder();
// 设置数据
builder["aaa.bbb.a1a"] = 111;
builder["aaa.bbb.a2a.aa"] = 123;
builder["aaa.bbb.a2a.bb"] = 321;
builder["aaa.bbb.a3a[].aa"] = 123;
builder["aaa.bbb.a3a[].bb"] = 321;
// 获取数据
console.log(builder["*"]);
console.log(builder["aaa"]);
console.log(builder["aaa.bbb"]);
console.log(builder["aaa.bbb.a1a"]);
console.log(builder["aaa.bbb.a3a"]);
console.log(builder["aaa.bbb.a3a[1]"]);
console.log(builder["aaa.bbb.a3a[1].bb"]);
console.log(builder["aaa.bbb.a3a[1].bbb"]);
// 获取所有数据
console.log(JSON.stringify(builder.result, null, 2));
1
const builder = new PathObjectBuilder();
// 设置数据
builder["[]"] = {
aa: 11,
bb: 22,
};
builder["[]"] = 111;
builder["[]"] = 222;
builder["[].[].[]"] = 111;
builder["[].aaa"] = 111;
builder["[].bbb"] = 222;
// 获取数据
console.log(builder["[]"]);
console.log(builder["*"]);
console.log(builder["[0]"]);
console.log(builder["[1]"]);
console.log(builder["[3]"]);
console.log(builder["[3].[]"]);
console.log(builder["[3].[0].[0]"]);
console.log(builder["[5].bbb"]);
console.log(builder["[5].aaa"]);
// 获取所有数据
console.log(JSON.stringify(builder.result, null, 2));
2
const builder = new PathObjectBuilder();
// 设置数据
builder["aaa.bbb.aa"] = 111;
builder["aaa.bbb.aa.aa"] = 123;
builder["aaa.bbb.aa.bb"] = 321;
builder["aaa.bbb.aa.aa"] = 444;
builder["aaa.bbb.aa.bb"] = 555;
// 获取数据
console.log(builder["*"]);
console.log(builder["aaa"]);
console.log(builder["aaa.bbb"]);
console.log(builder["aaa.bbb.aa.aa"]);
console.log(builder["aaa.bbb.aa.aa.ab"]);
console.log(builder["aaa.bbb.aa.ab"]);
// 获取所有数据
console.log(JSON.stringify(builder.result, null, 2));
3
const builder = new PathObjectBuilder();
// 设置数据
builder["aaa.bbb.a1a"] = 111;
builder["aaa.bbb.a2a.aa"] = 123;
builder["aaa.bbb.a2a.bb"] = "query 321";
builder["aaa.bbb.a3a.[].aa"] = 123;
builder["aaa.bbb.a3a.[].bb"] = 321;
// 获取数据
console.log(builder["*"]);
console.log(builder["aaa"]);
console.log(builder["aaa.bbb"]);
console.log(builder["aaa.bbb.a1a"]);
console.log(builder["aaa.bbb.a3a"]);
console.log(builder["aaa.bbb.a3a.[1]"]);
console.log(builder["aaa.bbb.a3a.[1].bb"]);
console.log(builder["aaa.bbb.a3a.[1].bbb"]);
// 获取所有数据
console.log(JSON.stringify(builder.result, null, 2));
end
TODO:
- 增加搜索并支持关键字查询及模糊查询.支持通配符: *, ?.
- 内部改用 Set 替换 Array