表亲关系的整理及过滤器的优化
This commit is contained in:
parent
fb5acebacb
commit
134e1c5739
@ -1,64 +1,13 @@
|
|||||||
(function(window){
|
(function(window){
|
||||||
//简写
|
//简写
|
||||||
var _filter = [
|
var _filter = [
|
||||||
{//自己是女性,女儿或儿子的妈妈是自己
|
/* 表亲 */
|
||||||
exp:/(,[mwd]|([olx]s)),[ds](&[ol])?,m/g,
|
|
||||||
str:'$1'
|
|
||||||
},
|
|
||||||
{//自己是女性,女儿或儿子的爸爸是自己的丈夫
|
|
||||||
exp:/(,[mwd]|([olx]s)),[ds](&[ol])?,f/g,
|
|
||||||
str:'$1,h'
|
|
||||||
},
|
|
||||||
{//自己是男性,女儿或儿子的爸爸是自己
|
|
||||||
exp:/(,[fhs]|([olx]b)),[ds](&[ol])?,f/g,
|
|
||||||
str:'$1'
|
|
||||||
},
|
|
||||||
{//自己是男性,女儿或儿子的妈妈是自己的妻子
|
|
||||||
exp:/(,[fhs]|([olx]b)),[ds](&[ol])?,m/g,
|
|
||||||
str:'$1,w'
|
|
||||||
},
|
|
||||||
{//不知道性别,子女的妈妈是自己或妻子
|
|
||||||
exp:/^,[ds],m(.+)$/,
|
|
||||||
str:'$1#,w$1'
|
|
||||||
},
|
|
||||||
{//不知道性别,子女的妈妈是自己或妻子
|
|
||||||
exp:/^,[ds],m$/,
|
|
||||||
str:',#,w'
|
|
||||||
},
|
|
||||||
{//不知道性别,子女的爸爸是自己或丈夫
|
|
||||||
exp:/^,[ds],f(.+)$/,
|
|
||||||
str:'$1#,h$1'
|
|
||||||
},
|
|
||||||
{//不知道性别,子女的爸爸是自己或丈夫
|
|
||||||
exp:/^,[ds],f/g,
|
|
||||||
str:',#,h'
|
|
||||||
},
|
|
||||||
{//夫妻的孩子就是自己的孩子
|
|
||||||
exp:/(.+),[wh](,[ds])/g,
|
|
||||||
str:'$1,$2'
|
|
||||||
},
|
|
||||||
{//夫妻的对方是自己
|
|
||||||
exp:/(,w,h)|(,h,w)/g,
|
|
||||||
str:''
|
|
||||||
},
|
|
||||||
{//兄弟的父母就是自己的父母
|
|
||||||
exp:/,[xol][sb](,[mf])/g,
|
|
||||||
str:'$1'
|
|
||||||
},
|
|
||||||
{//母亲的丈夫是自己的父亲
|
|
||||||
exp:/m,h/g,
|
|
||||||
str:'f',
|
|
||||||
},
|
|
||||||
{//父亲的妻子是自己的母亲
|
|
||||||
exp:/f,w/g,
|
|
||||||
str:'m',
|
|
||||||
},
|
|
||||||
{//表亲的关系
|
{//表亲的关系
|
||||||
exp:/^(.+)&o(.+)&o/g,
|
exp:/^(.+)&o([^#].+)&o/g,
|
||||||
str:'$1$2&o',
|
str:'$1$2&o',
|
||||||
},
|
},
|
||||||
{//表亲的关系
|
{//表亲的关系
|
||||||
exp:/^(.+)&l(.+)&l/g,
|
exp:/^(.+)&l([^#].+)&l/g,
|
||||||
str:'$1$2&l',
|
str:'$1$2&l',
|
||||||
},
|
},
|
||||||
{//表亲的关系
|
{//表亲的关系
|
||||||
@ -69,66 +18,20 @@
|
|||||||
exp:/^(.+)&l(.+)&o/g,
|
exp:/^(.+)&l(.+)&o/g,
|
||||||
str:'$1$2',
|
str:'$1$2',
|
||||||
},
|
},
|
||||||
{//孩子的姐妹是自己的女儿
|
/* 父母 */
|
||||||
exp:/(,[ds]&o),o[sb]/g,
|
{//母亲的丈夫是自己的父亲
|
||||||
str:'$1',
|
exp:/m,h/g,
|
||||||
|
str:'f',
|
||||||
},
|
},
|
||||||
{//孩子的兄弟是自己的儿子
|
{//父亲的妻子是自己的母亲
|
||||||
exp:/(,[ds]&l),l[sb]/g,
|
exp:/f,w/g,
|
||||||
str:'$1',
|
str:'m',
|
||||||
},
|
},
|
||||||
{//孩子的姐妹是自己的女儿
|
{//兄弟的父母就是自己的父母
|
||||||
exp:/,[ds](&[ol])?,[olx]s/g,
|
exp:/,[xol][sb](,[mf])/g,
|
||||||
str:',d',
|
str:'$1'
|
||||||
},
|
|
||||||
{//孩子的兄弟是自己的儿子
|
|
||||||
exp:/,[ds](&[ol])?,[olx]b/g,
|
|
||||||
str:',s',
|
|
||||||
},
|
|
||||||
{//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐
|
|
||||||
exp:/,o[sb](,o[sb])/,
|
|
||||||
str:'$1',
|
|
||||||
},
|
|
||||||
{//弟弟妹妹的弟弟妹妹还是自己的弟弟妹妹
|
|
||||||
exp:/,l[sb](,l[sb])/,
|
|
||||||
str:'$1',
|
|
||||||
},
|
|
||||||
{//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己
|
|
||||||
con:/(,[fhs]|([olx]b)),[olx][sb],[olx]b/,
|
|
||||||
exp:/^(.+)?,[olx][sb],[olx]b(.+)?$/,
|
|
||||||
str:'$1,xb$2#$1$2',
|
|
||||||
},
|
|
||||||
{//如果自己是女性,兄弟姐妹的兄弟就是自己的兄弟
|
|
||||||
con:/(,[mwd]|([olx]s)),[olx][sb],[olx]b/,
|
|
||||||
exp:/,[olx][sb],[olx]b/,
|
|
||||||
str:',xb',
|
|
||||||
},
|
|
||||||
{//如果自己是男性,兄弟姐妹的姐妹就是自己的姐妹
|
|
||||||
con:/(,[fhs]|([olx]b)),[olx][sb],[olx]s/,
|
|
||||||
exp:/,[olx][sb],[olx]s/,
|
|
||||||
str:',xs',
|
|
||||||
},
|
|
||||||
{//如果自己是女性,兄弟姐妹的姐妹就是自己的姐妹或自己
|
|
||||||
con:/(,[mwd]|([olx]s)),[olx][sb],[olx]s/,
|
|
||||||
exp:/^(.+)?,[olx][sb],[olx]s(.+)?$/,
|
|
||||||
str:'$1,xs$2#$1$2',
|
|
||||||
},
|
|
||||||
{//不知道性别,兄弟姐妹的兄弟是自己或兄弟/////////
|
|
||||||
exp:/^,[olx][sb],[olx]b(.+)$/,
|
|
||||||
str:',$1#,xb$1'
|
|
||||||
},
|
|
||||||
{//不知道性别,兄弟姐妹的兄弟是自己或兄弟
|
|
||||||
exp:/^,[olx][sb],[olx]b$/,
|
|
||||||
str:',#,xb'
|
|
||||||
},
|
|
||||||
{//不知道性别,兄弟姐妹的姐妹是自己或姐妹
|
|
||||||
exp:/^,[olx][sb],[olx]s(.+)$/,
|
|
||||||
str:',$1#,xs$1'
|
|
||||||
},
|
|
||||||
{//不知道性别,兄弟姐妹的姐妹是自己或姐妹
|
|
||||||
exp:/^,[olx][sb],[olx]s$/,
|
|
||||||
str:',#,xs'
|
|
||||||
},
|
},
|
||||||
|
/* 父母的子女 */
|
||||||
{//父母的女儿年龄判断是哥哥还是弟弟
|
{//父母的女儿年龄判断是哥哥还是弟弟
|
||||||
exp:/,[mf],d&([ol])/,
|
exp:/,[mf],d&([ol])/,
|
||||||
str:',$1s'
|
str:',$1s'
|
||||||
@ -158,28 +61,107 @@
|
|||||||
str:',xs'
|
str:',xs'
|
||||||
},
|
},
|
||||||
{//父母的儿子是自己或兄妹
|
{//父母的儿子是自己或兄妹
|
||||||
exp:/^(.+),[mf],s$/,
|
exp:/^,[mf],s(.+)?$/,
|
||||||
str:'$1#$1,xb'
|
|
||||||
},
|
|
||||||
{//父母的女儿是自己或者姐妹
|
|
||||||
exp:/^(.+),[mf],d$/,
|
|
||||||
str:'$1#$1,xs'
|
|
||||||
},
|
|
||||||
{//父母的儿子是自己或兄弟
|
|
||||||
exp:/^,[mf],s(.+)$/,
|
|
||||||
str:'$1#,xb$1'
|
str:'$1#,xb$1'
|
||||||
},
|
},
|
||||||
{//父母的女儿是自己或者姐妹
|
{//父母的女儿是自己或者姐妹
|
||||||
exp:/^,[mf],d(.+)$/,
|
exp:/^,[mf],d(.+)?$/,
|
||||||
str:'$1#,xs$1'
|
str:'$1#,xs$1'
|
||||||
},
|
},
|
||||||
{//父母的儿子是自己或兄妹
|
/* 兄弟姐妹 */
|
||||||
exp:/^,[mf],s$/,
|
{//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐(年龄判断)
|
||||||
str:',#,xb'
|
exp:/,o[sb](,o[sb])/,
|
||||||
|
str:'$1',
|
||||||
},
|
},
|
||||||
{//父母的女儿是自己或者姐妹
|
{//弟弟妹妹的弟弟妹妹还是自己的弟弟妹妹(年龄判断)
|
||||||
exp:/^,[mf],d$/,
|
exp:/,l[sb](,l[sb])/,
|
||||||
str:',#,xs'
|
str:'$1',
|
||||||
|
},
|
||||||
|
{//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己
|
||||||
|
con:/(,[fhs]|([olx]b)),[olx][sb],[olx]b/,
|
||||||
|
exp:/^(.+)?,[olx][sb],[olx]b(.+)?$/,
|
||||||
|
str:'$1,xb$2#$1$2',
|
||||||
|
},
|
||||||
|
{//如果自己是女性,兄弟姐妹的姐妹就是自己的姐妹或自己
|
||||||
|
con:/(,[mwd]|([olx]s)),[olx][sb],[olx]s/,
|
||||||
|
exp:/^(.+)?,[olx][sb],[olx]s(.+)?$/,
|
||||||
|
str:'$1,xs$2#$1$2',
|
||||||
|
},
|
||||||
|
{//如果自己是女性,兄弟姐妹的兄弟就是自己的兄弟
|
||||||
|
con:/(,[mwd]|([olx]s)),[olx][sb],[olx]b/,
|
||||||
|
exp:/,[olx][sb],[olx]b/,
|
||||||
|
str:',xb',
|
||||||
|
},
|
||||||
|
{//如果自己是男性,兄弟姐妹的姐妹就是自己的姐妹
|
||||||
|
con:/(,[fhs]|([olx]b)),[olx][sb],[olx]s/,
|
||||||
|
exp:/,[olx][sb],[olx]s/,
|
||||||
|
str:',xs',
|
||||||
|
},
|
||||||
|
{//不知道性别,兄弟姐妹的兄弟是自己或兄弟
|
||||||
|
exp:/^,[olx][sb],[olx]b(.+)?$/,
|
||||||
|
str:',$1#,xb$1'
|
||||||
|
},
|
||||||
|
{//不知道性别,兄弟姐妹的姐妹是自己或姐妹
|
||||||
|
exp:/^,[olx][sb],[olx]s(.+)?$/,
|
||||||
|
str:',$1#,xs$1'
|
||||||
|
},
|
||||||
|
/* 孩子 */
|
||||||
|
{//夫妻的孩子就是自己的孩子
|
||||||
|
exp:/,[wh](,[ds])/g,
|
||||||
|
str:'$1'
|
||||||
|
},
|
||||||
|
{//孩子的姐妹是自己的女儿(年龄判断)
|
||||||
|
exp:/,[ds]&o,ob/g,
|
||||||
|
str:',s&o',
|
||||||
|
},
|
||||||
|
{//孩子的姐妹是自己的女儿(年龄判断)
|
||||||
|
exp:/,[ds]&o,os/g,
|
||||||
|
str:',d&o',
|
||||||
|
},
|
||||||
|
{//孩子的兄弟是自己的儿子(年龄判断)
|
||||||
|
exp:/,[ds]&l,lb/g,
|
||||||
|
str:',s&l',
|
||||||
|
},
|
||||||
|
{//孩子的兄弟是自己的儿子(年龄判断)
|
||||||
|
exp:/,[ds]&l,ls/g,
|
||||||
|
str:',d&l',
|
||||||
|
},
|
||||||
|
{//孩子的姐妹是自己的女儿
|
||||||
|
exp:/,[ds](&[ol])?,[olx]s/g,
|
||||||
|
str:',d',
|
||||||
|
},
|
||||||
|
{//孩子的兄弟是自己的儿子
|
||||||
|
exp:/,[ds](&[ol])?,[olx]b/g,
|
||||||
|
str:',s',
|
||||||
|
},
|
||||||
|
/* 夫妻 */
|
||||||
|
{//夫妻的对方是自己
|
||||||
|
exp:/(,w,h)|(,h,w)/g,
|
||||||
|
str:''
|
||||||
|
},
|
||||||
|
{//自己是女性,女儿或儿子的妈妈是自己
|
||||||
|
exp:/(,[mwd]|([olx]s)),[ds](&[ol])?,m/g,
|
||||||
|
str:'$1'
|
||||||
|
},
|
||||||
|
{//自己是女性,女儿或儿子的爸爸是自己的丈夫
|
||||||
|
exp:/(,[mwd]|([olx]s)),[ds](&[ol])?,f/g,
|
||||||
|
str:'$1,h'
|
||||||
|
},
|
||||||
|
{//自己是男性,女儿或儿子的爸爸是自己
|
||||||
|
exp:/(,[fhs]|([olx]b)),[ds](&[ol])?,f/g,
|
||||||
|
str:'$1'
|
||||||
|
},
|
||||||
|
{//自己是男性,女儿或儿子的妈妈是自己的妻子
|
||||||
|
exp:/(,[fhs]|([olx]b)),[ds](&[ol])?,m/g,
|
||||||
|
str:'$1,w'
|
||||||
|
},
|
||||||
|
{//不知道性别,子女的妈妈是自己或妻子
|
||||||
|
exp:/^,[ds],m(.+)?$/,
|
||||||
|
str:'$1#,w$1'
|
||||||
|
},
|
||||||
|
{//不知道性别,子女的爸爸是自己或丈夫
|
||||||
|
exp:/^,[ds],f(.+)?$/,
|
||||||
|
str:'$1#,h$1'
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -415,13 +397,10 @@
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
var _attr = '';
|
|
||||||
|
|
||||||
//分词解析
|
//分词解析
|
||||||
function getSelectors(str){
|
function getSelectors(str){
|
||||||
var lists = str.split('的');
|
var lists = str.split('的');
|
||||||
var result = []; //所有可能性
|
var result = []; //所有可能性
|
||||||
// _attr = ''; //清除全局变量
|
|
||||||
while(lists.length){
|
while(lists.length){
|
||||||
var name = lists.shift(); //当前匹配词
|
var name = lists.shift(); //当前匹配词
|
||||||
var arr = []; //当前匹配词可能性
|
var arr = []; //当前匹配词可能性
|
||||||
@ -497,11 +476,11 @@
|
|||||||
|
|
||||||
function relationship(str){
|
function relationship(str){
|
||||||
var selectors = getSelectors(str);
|
var selectors = getSelectors(str);
|
||||||
// console.log('selectors#',selectors);
|
console.log('selectors#',selectors);
|
||||||
var result = []; //匹配结果
|
var result = []; //匹配结果
|
||||||
for(var i = 0;i<selectors.length;i++){ //遍历所有可能性
|
for(var i = 0;i<selectors.length;i++){ //遍历所有可能性
|
||||||
var ids = selector2id(selectors[i]);
|
var ids = selector2id(selectors[i]);
|
||||||
// console.log('ids#',ids);
|
console.log('ids#',ids);
|
||||||
for(var j=0;j<ids.length;j++){
|
for(var j=0;j<ids.length;j++){
|
||||||
var id = ids[j];
|
var id = ids[j];
|
||||||
if(_data[id]){ //直接匹配称呼
|
if(_data[id]){ //直接匹配称呼
|
||||||
@ -535,4 +514,5 @@
|
|||||||
//表哥的表哥
|
//表哥的表哥
|
||||||
//表哥的表妹
|
//表哥的表妹
|
||||||
//大舅的女儿
|
//大舅的女儿
|
||||||
console.log(relationship('表哥的表姐'));
|
//表哥的姐姐
|
||||||
|
console.log(relationship('表哥的姐姐'));
|
Loading…
x
Reference in New Issue
Block a user