/*! * relationship - Chinese kinship library * https://passer-by.com/relationship/ * * Copyright (c) 2016-present, HaoLe Zheng * Released under the MIT License. * https://github.com/mumuy/relationship/blob/master/LICENSE */ !function (root, factory) { if (typeof module === 'object' && module.exports){ module.exports = factory(); }else{ root.relationship = factory(); } }(this,function (){ /* * 关系数据语法说明: * 【关系符】 f:父; m:母; h:夫; w:妻; s:子; d:女; xb:兄弟; ob:兄; lb:弟; xs:姐妹; os:姐; ls:妹 * 【修饰符】 1:男性; 0:女性; &o:年长; &l:年幼; #:隔断; [a|b]:并列 */ // 关系链缩写规则 var _filter = [ /* 年龄 */ {//有大有小,增加不确定性 exp:/^(.+)&o([^#]+)&l/g, str:'$1$2' }, {//有大有小,增加不确定性 exp:/^(.+)&l([^#]+)&o/g, str:'$1$2' }, {//有大有小,增加不确定性 exp:/^(.+)?,o([sb])([^#]+)&l/g, str:'$1,x$2$3' }, {//有大有小,增加不确定性 exp:/^(.+)?,l([sb])([^#]+)&o/g, str:'$1,x$2$3' }, {//隔代跨越,增加不确定性 exp:/(,[ds],(.+),[ds])&[ol]/g, str:'$1' }, /* 兄弟姐妹 */ {//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐(年龄判断) exp:/(,o[sb])+(,o[sb])/, str:'$2' }, {//弟弟妹妹的弟弟妹妹还是自己的弟弟妹妹(年龄判断) exp:/(,l[sb])+(,l[sb])/, str:'$2' }, {//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己 exp:/^(.*)(,[fh1])(,[olx][sb])+,[olx]b(.*)$/, str:'$1$2,xb$4#$1$2$4' }, {//如果自己是女性,兄弟姐妹的姐妹就是自己的姐妹或自己 exp:/^(.*)(,[mw0])(,[olx][sb])+,[olx]s(.*)$/, str:'$1$2,xs$4#$1$2$4' }, {//如果自己是男性,兄弟姐妹的姐妹就是自己的姐妹 exp:/(,[fh1])(,[olx][sb])+,[olx]s/g, str:'$1,xs' }, {//如果自己是女性,兄弟姐妹的兄弟就是自己的兄弟 exp:/(,[mw0])(,[olx][sb])+,[olx]b/g, str:'$1,xb' }, {//不知道性别,兄弟姐妹的兄弟是自己或兄弟 exp:/^,[olx][sb],[olx]b(.+)?$/, str:'$1#,xb$1' }, {//不知道性别,兄弟姐妹的姐妹是自己或姐妹 exp:/^,[olx][sb],[olx]s(.+)?$/, str:'$1#,xs$1' }, {//将复合称谓拆分 exp:/^,x([sb])$/, str:',o$1#,l$1' }, /* 父母 */ {//母亲的丈夫是自己的父亲 exp:/m,h/g, str:'f' }, {//父亲的妻子是自己的母亲 exp:/f,w/g, str:'m' }, {//兄弟的父母就是自己的父母 exp:/,[xol][sb](,[mf])/g, str:'$1' }, /* 父母的子女 */ {//父母的女儿年龄判断是姐姐还是妹妹 exp:/,[mf],d&([ol])/, str:',$1s' }, {//父母的儿子年龄判断是哥哥还是弟弟 exp:/,[mf],s&([ol])/, str:',$1b' }, {//如果自己是男性,父母的儿子是自己或者兄弟 exp:/^(.*)(,[fh1]|[xol]b),[mf],s(.*)$/, str:'$1$2,xb$3#$1$2$3' }, {//如果自己是女性,父母的女儿是自己或者姐妹 exp:/^(.*)(,[mw0]|[xol]s),[mf],d(.*)$/, str:'$1$2,xs$3#$1$2$3' }, {//如果自己是女性,父母的儿子是自己兄弟 exp:/(,[mw0]|[xol]s),[mf],s/, str:'$1,xb' }, {//如果自己是男性,父母的女儿是自己姐妹 exp:/(,[fh1]|[xol]b),[mf],d/, str:'$1,xs' }, {//父母的儿子是自己或兄弟 exp:/^,[mf],s(.+)?$/, str:',1$1#,xb$1' }, {//父母的女儿是自己或者姐妹 exp:/^,[mf],d(.+)?$/, str:',0$1#,xs$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:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,m/g, str:'$1' }, {//自己是女性,女儿或儿子的爸爸是自己的丈夫 exp:/(,[mwd0](&[ol])?|[olx]s),[ds](&[ol])?,f/g, str:'$1,h' }, {//自己是男性,女儿或儿子的爸爸是自己 exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,f/g, str:'$1' }, {//自己是男性,女儿或儿子的妈妈是自己的妻子 exp:/(,[fhs1](&[ol])?|[olx]b),[ds](&[ol])?,m/g, str:'$1,w' }, {//不知道性别,子女的妈妈是自己或妻子 exp:/^,[ds],m(.+)?$/, str:'$1#,w$1' }, {//不知道性别,子女的爸爸是自己或丈夫 exp:/^,[ds],f(.+)?$/, str:'$1#,h$1' }, {//夫妻的孩子就是自己的孩子 exp:/,[wh](,[ds])/g, str:'$1' }, {//夫妻的对方是自己 exp:/,w,h|,h,w/g, str:'' }, {//并列关系处理1 X[A|B|C]Y = XAY#X[B|C]Y exp:/(.+)?\[([^\|]+?)\|([^\[\]]*\|[^\[\]]*)\](.+)?/g, str:'$1$2$4#$1[$3]$4' }, {//并列关系处理2 X[A|B]Y = XAY#XBY exp:/(.+)?\[([^\[\]\|]+?)\|([^\[\]\|]+?)?\](.+)?/g, str:'$1$2$4#$1$3$4' } ]; // 主要关系链 var _main = { '':['自己','我','俺','本人','在下'], //并称 '[f,f|f,m|m,f],[f,m],f':['老太奶爷','祖太奶爷'], '[f,f|f,m|m,f],[f,m],m':['老太奶奶','祖太奶奶'], '[f,m|m,f|m,m],[f,m],f':['老太姥爷','祖太姥爷'], '[f,m|m,f|m,m],[f,m],m':['老太姥姥','祖太姥姥'], '[f,f|f,m|m,f],f':['太奶爷','祖奶爷'], '[f,f|f,m|m,f],f,ob':['伯太奶爷','太伯奶爷'], '[f,f|f,m|m,f],f,ob,w':['伯太奶奶','太伯奶奶'], '[f,f|f,m|m,f],f,lb':['叔太奶爷','太叔奶爷'], '[f,f|f,m|m,f],f,lb,w':['叔太奶奶','太叔奶奶'], '[f,f|f,m|m,f],f,xs':['姑太奶奶','太姑奶奶'], '[f,f|f,m|m,f],f,xs,h':['姑太奶爷','太姑奶爷'], '[f,f|f,m|m,f],m':['太奶奶','祖奶奶'], '[f,f|f,m|m,f],m,xb':['舅太奶爷','太舅奶爷'], '[f,f|f,m|m,f],m,xb,w':['舅太奶奶','太舅奶奶'], '[f,f|f,m|m,f],m,xs':['姨太奶奶','太姨奶奶'], '[f,f|f,m|m,f],m,xs,h':['姨太奶爷','太姨奶爷'], '[f,m|m,f|m,m],f':['太姥爷','祖姥爷','太毑爷'], '[f,m|m,f|m,m],f,ob':['伯太姥爷','伯叔姥爷'], '[f,m|m,f|m,m],f,ob,w':['伯太姥姥','太伯姥姥'], '[f,m|m,f|m,m],f,lb':['叔太姥爷','太叔姥爷'], '[f,m|m,f|m,m],f,lb,w':['叔太姥姥','太叔姥姥'], '[f,m|m,f|m,m],f,xs':['姑太姥姥','太姑姥姥'], '[f,m|m,f|m,m],f,xs,h':['姑太姥爷','太姑姥爷'], '[f,m|m,f|m,m],m':['太姥姥','祖姥姥','太毑毑'], '[f,m|m,f|m,m],m,xb':['舅太姥爷','太舅姥爷'], '[f,m|m,f|m,m],m,xb,w':['舅太姥姥','太舅姥姥'], '[f,m|m,f|m,m],m,xs':['姨太姥姥','太姨姥姥'], '[f,m|m,f|m,m],m,xs,h':['姨太姥爷','太姨姥爷'], '[f,m][f,m]':['祖辈'], 'f,[f|m]':['祖父母','爷爷奶奶'], 'm,[f|m]':['外祖父母','外公外婆','姥姥姥爷'], '[f|m]':['父母','爹娘','爹妈','爸妈','爸爸妈妈','父母亲','双亲','二亲','两亲','二老','高堂'], '[f|m],[f,xs|m,xb],s':['舅姑爸','姑舅爸'], '[f|m],[f,xs|m,xb],s&o,w':['舅姑姆','姑舅姆'], '[f|m],[f,xs|m,xb],s&l,w':['舅姑婶','姑舅婶'], '[f|m],[f,xs|m,xb],d':['姑舅娘娘'], '[f|m],[m,xs],s':['两姨爸'], '[f|m],[m,xs],s&o,w':['两姨姆'], '[f|m],[m,xs],s&l,w':['两姨婶'], '[f|m],[m,xs],d':['两姨娘娘'], 'f,[ob|ob,w]':['伯父母'], 'f,[lb|lb,w]':['叔父母'], 'f,[xs|xs,h]':['姑父母'], 'm,[xb|xb,w]':['舅父母'], 'm,[xs|xs,h]':['姨父母'], 'w,[f|m]':['岳父母','岳父岳母','丈人丈母','舅姑'], 'w,f,[ob|ob,w]':['伯岳父母'], 'w,f,[lb|lb,w]':['叔岳父母'], 'w,f,[xs|xs,h]':['姑岳父母'], 'w,m,[xb|xb,w]':['舅岳父母'], 'w,m,[xs|xs,h]':['姨岳父母'], 'h,[f|m]':['公婆','翁姑','大家官','公公婆婆','姑嫜'], 'h,f,[ob|ob,w]':['伯公婆'], 'h,f,[lb|lb,w]':['叔公婆'], 'h,f,[xs|xs,h]':['姑公婆'], 'h,m,[xb|xb,w]':['舅公婆'], 'h,m,[xs|xs,h]':['姨公婆'], '[xb|xs]':['兄弟姐妹','同胞','同胞兄弟姐妹','手足'], '[ob|os]':['哥哥姐姐'], '[lb|ls]':['弟弟妹妹'], '[ob|ob,w]':['哥哥嫂嫂'], '[f,xb|m,xs],[s|d]':['从兄弟姐妹','从姐妹兄弟'], '[f,xs|m,xb],[s|d]':['表兄弟姐妹','表姐妹兄弟','老表'], '[f,xb|m,xs],s':['从兄弟'], '[f,xb|m,xs],d':['从姐妹'], '[f,xs|m,xb],s':['表兄弟'], '[f,xs|m,xb],d':['表姐妹'], 'f,xb,[s|d]':['堂兄弟姐妹','堂姐妹兄弟','从父兄弟姐妹'], 'm,xs,[s|d]':['姨兄弟姐妹','姨姐妹兄弟','从母兄弟姐妹'], 'f,xs,[s|d]':['姑表兄弟姐妹'], 'm,xb,[s|d]':['舅表兄弟姐妹'], '[f,xs|m,xb],s':['姑舅兄弟','舅姑兄弟'], '[f,xs|m,xb],s&o':['姑舅哥','姑舅哥哥'], '[f,xs|m,xb],s&l':['姑舅弟','姑舅弟弟'], '[f,xs|m,xb],d':['姑舅姊妹','舅姑姊妹'], '[f,xs|m,xb],d&o':['姑舅姐','姑舅姐姐'], '[f,xs|m,xb],d&l':['姑舅妹','姑舅妹妹'], '[f,xs|m,xb],s,s':['姑舅儿子'], '[f,xs|m,xb],s,d':['姑舅女儿'], 'xb,[s|d]':['侄子女','侄子侄女'], 'xs,[s|d]':['甥子女','外甥子女'], '[w|s|d]':['妻儿'], '[s|d]':['子女','儿女','小孩','孩子','孩子们','孩儿','小孩儿','宝宝','宝贝','娃','儿辈','子辈'], '[s|d],[s|d]':['孙辈'], 's,[s|d]':['孙子女'], 'd,[s|d]':['外孙子女'], '[s|d]#[s|d],[s|d]':['儿孙','子孙','孙息'], '[s,w|d,h],[f|m]':['亲家','儿女亲家'], '[s,w|d,h],f':['亲家公','亲家父','亲家翁','亲家世翁','姻翁'], '[s,w|d,h],m':['亲家母','亲家婆','亲家姆','姻姆'], '[s,w|d,h],[f|m],f':['姻太翁'], '[s,w|d,h],[f|m],m':['姻太姆'], // 主线 'f,f,f,f,f,f,f,f,f':['鼻祖父','鼻祖','始祖','九世祖'], 'f,f,f,f,f,f,f,f,m':['鼻祖母'], 'f,f,f,f,f,f,f,f':['远祖父','远祖','八世祖'], 'f,f,f,f,f,f,f,m':['远祖母'], 'f,f,f,f,f,f,f':['太祖父','太祖','七世祖'], 'f,f,f,f,f,f,m':['太祖母'], 'f,f,f,f,f,f':['烈祖父','烈祖','六世祖'], 'f,f,f,f,f,m':['烈祖母'], 'f,f,f,f,f':['天祖父','天祖','五世祖'], 'f,f,f,f,m':['天祖母'], 'f,f,f,f':['高祖父','外曾外曾外毑父','祖太公','祖太爷','祖太翁','祖太爷爷','四世祖'], 'f,f,f,m':['高祖母','外曾外曾外毑母','祖太婆','祖太奶','祖太姆','祖太奶奶'], // 高祖辈 'f,f,m,f':['高外祖父','外曾外曾毑父'], 'f,f,m,m':['高外祖母','外曾外曾毑母'], 'f,m,f,f':['曾外曾祖父','外高外毑父'], 'f,m,f,m':['曾外曾祖母','外高外毑母'], 'f,m,m,f':['曾外曾外祖父','外高毑父'], 'f,m,m,m':['曾外曾外祖母','外高毑母'], 'm,f,f,f':['外高祖父','曾外曾外毑父'], 'm,f,f,m':['外高祖母','曾外曾外毑母'], 'm,f,m,f':['外高外祖父','曾外曾祖毑父'], 'm,f,m,m':['外高外祖母','曾外曾祖毑母'], 'm,m,f,f':['外曾外曾祖父','高外毑父'], 'm,m,f,m':['外曾外曾祖母','高外毑母'], 'm,m,m,f':['外曾外曾外祖父','高毑父'], 'm,m,m,m':['外曾外曾外祖母','高毑母'], // 曾祖辈 'f,f,f':['曾祖父','曾祖','外曾外毑父','太公','太爷','祖爷','太翁','太爷爷','三世祖'], 'f,f,m':['曾祖母','外曾外毑母','太婆','太奶','太嬷','太姆','太奶奶'], 'f,m,f':['曾外祖父','曾外祖','外曾毑父','太外公','太外爷','太外翁','太外爷爷'], 'f,m,m':['曾外祖母','外曾毑母','太外婆','太外奶','太外姆','太外奶奶'], 'm,f,f':['外曾祖父','外曾祖','曾外毑父','外太公','外太爷','外太翁','外太爷爷','老外公','老外爷','老姥爷'], 'm,f,m':['外曾祖母','曾外毑母','外太婆','外太奶','外太姆','外太奶奶'], 'm,m,f':['外曾外祖父','外曾外祖','曾毑父','外太外公','外太外爷','外太外翁','外太外爷爷','外太姥爷'], 'm,m,m':['外曾外祖母','曾毑母','外太外婆','外太外奶','外太外姆','外太外奶奶','老外婆','老外奶','老姥姥','老姥娘'], 'f,f,f,xb':['族曾祖父'], 'f,f,f,xb,w':['族曾祖母'], // 祖父辈 'f,f':['爷爷','祖父','奶爷','阿爷','阿公','二世祖'], 'f,m':['奶奶','祖母','阿嬷','阿嫲','嫲嫲'], 'm,f':['外公','外祖父','姥爷','阿公','客公','外爷','舅家爷','毑父','毑爷'], 'm,m':['外婆','外祖母','姥姥','姥娘','阿婆','阿嬷','阿嫲','嫲嫲','外奶','客婆','舅家婆','毑母','毑毑'], 'f,f,ob':['伯公','伯祖','伯翁','伯爷','伯祖父','伯老爷','大爷爷','大爷','大公','伯爷爷','大伯公','大阿爷','x伯公','x阿爷'], 'f,f,ob,w':['伯婆','伯祖母','伯奶奶','大奶奶','姆婆'], 'f,f,lb':['叔公','叔祖','叔翁','叔爷','叔祖父','叔老爷','小爷爷','叔爷爷','叔奶爷','晚公','x叔公'], 'f,f,lb,w':['叔婆','叔祖母','叔奶奶','小奶奶','婶婆','晚婆'], 'f,f,xb':['堂祖父','从祖祖父','从祖父','x爷爷','x大爷','x爷','x公'], 'f,f,xb,w':['堂祖母','从祖祖母','从祖母','x奶奶','x大娘','x奶','x婆'], 'f,f,xs':['姑奶奶','祖姑母','姑祖母','姑奶','姑婆','祖姑'], 'f,f,xs,h':['姑爷爷','祖姑父','祖姑丈','姑祖父','姑老爷','姑公','姑奶爷','姑丈公','丈公'], 'f,m,xb':['舅公','舅祖父','舅老爷','舅爷爷','舅爷','舅祖','舅奶爷','舅爹','太舅父','x舅老爷','x舅公'], 'f,m,xb,w':['舅婆','舅祖母','舅奶奶','舅奶','妗婆','妗奶','太舅母','x舅婆'], 'f,m,xs':['姨奶奶','祖姨母','姨祖母','姨婆','姨奶','x姨奶'], 'f,m,xs,h':['姨爷爷','祖姨父','姨祖父','姨公','姨丈公','姨爷','姨老爷','姨奶爷'], 'm,f,ob':['外伯公','伯外祖父','外伯祖父','伯姥爷','外伯祖','伯外祖','大外公','大姥爷','大外爷'], 'm,f,ob,w':['外伯婆','伯外祖母','外伯祖母','伯姥姥','外姆婆','大外婆','大姥姥','大姥奶'], 'm,f,lb':['外叔公','叔外祖父','外叔祖父','叔姥爷','外叔祖','叔外祖','小外公','小姥爷','小外爷'], 'm,f,lb,w':['外叔婆','叔外祖母','外叔祖母','叔姥姥','外婶婆','小外婆','小姥姥','小姥奶'], 'm,f,xb':['x外公','x姥爷','x外爷'], 'm,f,xb,w':['x外婆','x姥姥','x姥奶','x外奶','x姥'], 'm,f,xs':['外姑婆','姑姥姥','姑外祖母','外姑祖母','外祖姑母','外太姑母','x姑姥姥'], 'm,f,xs,h':['外姑公','姑姥爷','姑外祖父','外姑祖父','外祖姑父','外太姑父','外姑丈公','外丈公','x姑姥爷'], 'm,m,xb':['外舅公','外舅祖父','外太舅父','舅外祖父','外祖舅父','舅外公','舅外爷','舅姥爷','舅爹','舅公','x舅姥爷'], 'm,m,xb,w':['外舅婆','外舅祖母','外太舅母','舅外祖母','外祖舅母','舅外婆','舅外奶','舅姥姥','舅姥','舅婆','妗姥姥','妗姥娘','妗姥','外妗婆','x舅姥姥'], 'm,m,xs':['外姨婆','姨外祖母','姨外婆','姨外奶','姨姥姥','姨姥','外姨祖母','从母外祖母','x姨姥姥'], 'm,m,xs,h':['外姨公','姨外祖父','姨外公','姨外爷','姨姥爷','外姨祖父','从母外祖父','x姨姥爷'], // 父辈 'f':['爸爸','父亲','老爸','阿爸','阿爹','老窦','老汉','老汉儿','老子','爸','父','爹','爹爹','爹地','爹啲','老爹','老爷子','一世祖'], 'm':['妈妈','母亲','阿妈','老母','老妈','老娘','老妈子','妈子','姆嬷','姆妈','妈','母','娘','娘亲','妈咪'], 'f,ob':['伯父','伯伯','阿伯','大伯','大伯爷','大大','世父','大爹','大爸','x伯'], 'f,ob,w':['伯母','伯妈','伯娘','姆姆','姆','世母','大娘','大妈','大姆妈','x伯母','x妈'], 'f,lb':['叔叔','叔父','叔爸','叔爹','阿叔','仲父','季父','小叔','小爹','小爸','尕爸','幺爸','幺叔','细叔','满叔','晚叔','叔','x叔'], 'f,lb,w':['婶婶','婶母','婶娘','婶妈','婶爹','阿婶','仲母','季母','小婶','小娘','小妈','尕婶','幺婶','细婶','满婶','晚婆','小婶娘','婶子','婶儿','家婶','叔母','叔妈','叔娘','婶','x叔母','x婶'], 'f,os':['大姑','大姑妈','姑姊'], 'f,ls':['小姑','小姑妈','姑姐','姑妹','姑仔','尕娘','幺姑','幺姑姐','老姑','细姑','满姑'], 'f,xs':['姑妈','姑母','姑姑','嬢嬢','娘娘','姑','x嬢嬢','x嬢','x姑妈','x姑'], 'f,xs,h':['姑丈','姑父','姑爸','姑爹','姑夫','姑婿','亘','x姑丈','x姑父'], 'm,ob':['大舅','舅父'], 'm,ob,w':['大舅妈','大妗'], 'm,lb':['小舅','舅仔','舅父仔','幺舅','老舅','细舅','满舅','尕阿舅'], 'm,lb,w':['小舅妈','小妗','细妗'], 'm,xb':['舅舅','舅父','舅爸','舅爹','娘舅','母舅','舅','舅仔','阿舅','x舅'], 'm,xb,w':['舅妈','舅母','舅媳妇','妗','妗子','妗妗','妗妈','妗娘','妗母','阿妗','x舅妈'], 'm,os':['大姨','大姨妈'], 'm,os,h':['大姨父','大姨丈','大姨婿','大姨爸'], 'm,ls':['小姨','小姨妈','姨仔','幺姨','老姨','满姨','细姨','尕姨娘'], 'm,ls,h':['小姨父','小姨丈','小姨婿','小姨爹'], 'm,xs':['姨妈','姨母','姨姨','姨娘','阿姨','姨','x姨','x姨妈'], 'm,xs,h':['姨丈','姨父','姨爸','姨爹','姨婿','姨郎','尹','x姨丈','x姨父'], 'f,f,xb,s&o':['堂伯'], 'f,f,xb,s&o,w':['堂伯母'], 'f,f,xb,s&l':['堂叔'], 'f,f,xb,s&l,w':['堂婶'], 'f,f,xb,s':['堂叔伯'], 'f,f,xb,d':['堂姑'], 'f,f,xb,d,h':['堂姑丈'], 'm,f,xb,s':['堂舅'], 'm,f,xb,s,w':['堂舅妈'], 'm,f,xb,d':['堂姨'], 'm,f,xb,d,h':['堂姨丈'], // 同辈 'h':['老公','丈夫','先生','官人','男人','汉子','夫','夫君','相公','夫婿','良人','老头子','爱人','老伴','那口子','配偶','伴侣','卿卿'], 'f,xb,s&o':['堂哥','堂阿哥'], 'f,xb,s&o,w':['堂嫂','堂兄嫂'], 'f,xb,s&l':['堂弟','堂阿弟'], 'f,xb,s&l,w':['堂弟媳','堂弟媳','堂弟妹'], 'f,xb,d&o':['堂姐','堂阿姐'], 'f,xb,d&o,h':['堂姐夫'], 'f,xb,d&l':['堂妹','堂阿妹'], 'f,xb,d&l,h':['堂妹夫'], // 婆家 'h,f,f,f':['曾祖公父','曾祖公','太公翁'], 'h,f,f,m':['曾祖婆母','曾祖婆','太奶亲'], 'h,f,m,f':['曾外祖公父','曾外祖公'], 'h,f,m,m':['曾外祖婆母','曾外祖婆'], 'h,m,f,f':['外曾祖公父','外曾祖公'], 'h,m,f,m':['外曾祖婆母','外曾祖婆'], 'h,m,m,f':['外曾外祖公父','外曾外祖公'], 'h,m,m,m':['外曾外祖婆母','外曾外祖婆'], 'h,f,f,f,ob':['伯曾祖公父','伯曾祖公','太伯翁'], 'h,f,f,f,ob,w':['伯曾祖婆母','伯曾祖婆','太姆婆'], 'h,f,f,f,lb':['叔曾祖公父','叔曾祖公','太叔翁'], 'h,f,f,f,lb,w':['叔曾祖婆母','叔曾祖婆','太婶婆'], 'h,f,f,f,xs':['姑曾祖婆母','姑曾祖婆'], 'h,f,f,f,xs,h':['姑曾祖公父','姑曾祖婆'], 'h,f,f':['祖公父','祖公','祖翁','奶公父'], 'h,f,m':['祖婆母','祖婆','奶婆母'], 'h,m,f':['外祖公父','外祖公','姥公父','姥公'], 'h,m,m':['外祖婆母','外祖婆','姥婆母','姥婆'], 'h,f':['公公','翁亲','家公','大官','老公公','老人公','公爹','婆父','婆爹'], 'h,m':['婆婆','婆母','家婆','姑亲','大家','婆母娘','老婆婆','老人婆'], 'h,f,ob':['伯公父','伯公','伯翁'], 'h,f,ob,w':['伯婆母','伯婆','伯姆'], 'h,f,lb':['叔公父','叔公','叔翁','叔祖'], 'h,f,lb,w':['叔婆母','叔婆','婶婆','婶婆婆','婶亲'], 'h,m,xb':['舅公父','舅公',], 'h,m,xb,w':['舅婆母','舅婆','妗婆婆'], 'h,m,xs':['姨婆母','姨婆'], 'h,m,xs,h':['姨公父','姨公'], 'h,ob':['大伯子','大伯兄','夫兄','外兄'], 'h,ob,w':['大婶子','大伯兄姊','外兄嫂','伯嫂','大伯嫂','大伯妇','大伯娘','夫兄嫂'], 'h,lb':['小叔子','小叔弟','夫弟','外弟'], 'h,lb,w':['小婶子','小叔弟妹','外弟妇','叔妇','小叔妇','小婶','夫弟妇'], 'h,xb':['伯叔'], 'h,xb,w':['妯娌'], 'h,os':['大姑子','大姑姐','外姐','夫姐','大娘姑','婆姐','婆婆姐'], 'h,os,h':['大姑夫','外姐夫','大亘子','婆姐夫','婆婆姐夫'], 'h,ls':['小姑子','小姑妹','姑妹','外妹','夫妹','婆妹','婆婆妹'], 'h,ls,h':['小姑夫','外妹夫','小亘子','婆妹夫','婆婆妹夫'], 'h,xs':['夫姑'], 'h,xs,h':['姑夫'], // 岳家 'w,f,f,f':['曾祖岳父','曾祖丈人','太爷丈人','祖爷丈人'], 'w,f,f,m':['曾祖岳母','曾祖丈母','曾祖丈母娘','祖奶丈母娘','太奶丈母娘'], 'w,f,m,f':['曾外祖岳父','曾外祖丈人','祖姥爷丈人','太姥爷丈'], 'w,f,m,m':['曾外祖岳母','曾外祖丈母','曾外祖丈母娘','祖姥丈母娘','太姥丈母娘'], 'w,m,f,f':['外曾祖岳父','外曾祖丈人','祖奶爷丈人','太奶爷丈人','祖姥爷丈人','太姥爷丈人'], 'w,m,f,m':['外曾祖岳母','外曾祖丈母','太奶丈母娘','祖姥丈母娘','太姥丈母娘'], 'w,m,m,f':['外曾外祖岳父','外曾外祖丈人','祖姥爷丈人','太姥爷丈人'], 'w,m,m,m':['外曾外祖岳母','外曾外祖丈母','外曾外祖丈母娘','祖姥丈母娘','太姥丈母娘'], 'w,f,f':['祖岳父','太岳父','奶岳父','祖丈人','爷丈人','奶爷丈人'], 'w,f,m':['祖岳母','太岳母','奶岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'], 'w,m,f':['外祖岳父','外祖丈人','外太岳父','姥岳父','姥丈人','姥爷丈人'], 'w,m,m':['外祖岳母','外祖丈母娘','外祖丈母','外太岳母','姥岳母','姥丈母','姥丈母娘'], 'w,f':['岳父','岳丈','老丈人','丈人爹','岳翁','丈人','丈父','内父','外父','妻父','泰山','外舅'], 'w,m':['岳母','丈母娘','老丈母','丈人娘','丈母','内母','外母','妻母','泰水','外姑'], 'w':['老婆','妻子','太太','媳妇儿','媳妇','夫人','女人','婆娘','妻','内人','内子','娘子','爱妻','老太婆','老婆子','爱人','老伴','那口子','配偶','伴侣','卿卿'], 'w,ob':['大舅子','大舅兄','妻兄','内兄','岳兄','舅兄'], 'w,ob,w':['大舅妇','大舅兄嫂','舅嫂','大舅嫂','大舅姐','大舅媳妇','大妗子','妻嫂','内嫂','妻兄妇','内兄妇','岳兄妇','舅兄妇'], 'w,lb':['小舅子','小舅弟','妻弟','内弟','岳弟','舅弟'], 'w,lb,w':['小舅妇','小舅弟妇','舅弟媳','小舅妹','小舅媳妇','小妗子','妻妹夫','内妹夫','妻弟妇','内弟妇','岳弟妇','舅弟妇'], 'w,xb':['妻舅'], 'w,xb,w':['妻妗'], 'w,os':['大姨子','大姨姐','妻姐','内姐'], 'w,os,h':['大姨夫','大姨姐夫','襟兄','大尹子'], 'w,ls':['小姨子','小姨妹','妻妹','内妹','小妹儿'], 'w,ls,h':['小姨夫','小姨妹夫','襟弟','小尹子'], 'w,xs':['妻姨'], 'w,xs,h':['连襟','连桥','姨夫','姨夫爷','一担挑','老挑','担儿挑','连襟儿','妻尹'], // 兄弟 'ob':['哥哥','哥','兄','老哥','兄长','阿哥','大佬','胞哥','大哥','x哥'], 'ob,w':['嫂子','嫂','嫂嫂','哥嫂','兄嫂','兄妇','兄妻','大嫂','大嫂子','阿嫂','x嫂'], 'lb':['弟弟','弟','胞弟','老弟','阿弟','细佬','小弟','幺弟','细弟','满弟','x弟'], 'lb,w':['弟妹','弟媳','弟媳妇','弟妇','x弟妹'], 'xb':['兄弟','亲兄弟','同胞兄弟'], 'xb,w':['兄弟媳妇','兄弟妇'], '0,xb,w,xb,s':['舅眷舅男'], '1,xb,w,xb,s':['叔眷舅男'], '0,xb,w,xb,d':['舅眷舅女'], '1,xb,w,xb,d':['叔眷舅女'], '0,xb,w,xs,s':['舅眷姨男'], '1,xb,w,xs,s':['叔眷姨男'], '0,xb,w,xs,d':['舅眷姨女'], '1,xb,w,xs,d':['叔眷姨女'], '0,xb,s':['娘家侄子','娘家侄'], 'xb,s':['侄子','侄男','侄儿','阿侄','侄'], // 姐妹 'os':['姐姐','姐','阿姊','胞姐','大姐','阿姐','家姐','x姐'], 'os,h':['姐夫','姐丈','姐婿','姐夫哥','胞姐夫','大姐夫','x姐夫'], 'ls':['妹妹','妹','胞妹','老妹','阿妹','小妹','幺妹','细妹','满妹','x妹'], 'ls,h':['妹夫','妹丈','妹婿','妹弟','胞妹夫','小妹夫','x妹夫'], 'xs':['姐妹','亲姐妹','同胞姐妹'], 'xs,h':['姐妹夫'], '0,xs,h,xb,s':['姨姻叔男'], '1,xs,h,xb,s':['姑姻叔男'], '0,xs,h,xb,d':['姨姻叔女'], '1,xs,h,xb,d':['姑姻叔女'], '0,xs,h,xs,s':['姨姻姑男'], '1,xs,h,xs,s':['姑姻姑男'], '0,xs,h,xs,d':['姨姻姑女'], '1,xs,h,xs,d':['姑姻姑女'], '0,xs,s':['姨甥'], '0,xs,s,w':['姨甥媳妇'], '0,xs,d':['姨甥女','姨甥'], '0,xs,d,h':['姨甥婿'], 'xs,s':['外甥','外甥男','外甥儿','外甥子','外甥儿子'], 'xs,d':['外甥女','外甥囡'], // 堂表亲 'f,xb,s,s':['堂侄','堂侄子','堂侄儿','堂侄男','从父侄男','叔伯侄男','从父侄子','叔伯侄子','从子'], 'f,xb,s,s,w':['堂侄媳妇','堂侄妇','从父侄妇','叔伯侄妇'], 'f,xb,d,s':['堂外甥','堂甥男','从父甥男','叔伯甥男'], 'f,xb,d,s,w':['堂甥媳妇','堂甥妇','从父甥妇','叔伯甥妇'], // 子辈 's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','男亲','长子','次子','幼子','儿','仔','子','阿仔','仔仔','x儿子','一世孙'], 's,w':['儿媳','儿媳妇','新妇','心抱','息妇','x儿媳'], 's,s':['孙子','孙男','孙男儿','孙儿','大孙子','x孙子','二世孙'], 's,s,w':['孙媳妇','孙媳','孙妇','孙息妇','孙新妇','x孙媳'], 's,s,s':['曾孙','曾孙男','重孙','重孙子','息仔','三世孙'], 's,s,s,w':['曾孙妇','重孙媳妇'], 's,s,s,s':['玄孙','元孙','膀孙','四世孙'], 's,s,s,s,w':['玄孙媳妇'], 's,s,s,s,s':['来孙','五世孙'], 's,s,s,s,s,w':['来孙媳妇'], 's,s,s,s,s,s':['晜孙','六世孙'], 's,s,s,s,s,s,w':['晜孙媳妇'], 's,s,s,s,s,s,s':['仍孙','七世孙'], 's,s,s,s,s,s,s,w':['仍孙媳妇'], 's,s,s,s,s,s,s,s':['云孙','八世孙'], 's,s,s,s,s,s,s,s,s':['耳孙','九世孙'], 's,s,s,s,s,s,s,s,s,w':['耳孙媳妇'], 's,s,s,s,s,s,s,s,d':['耳孙女'], 's,s,s,s,s,s,s,s,d,h':['耳孙女婿'], 's,s,s,s,s,s,s,d':['云孙女'], 's,s,s,s,s,s,s,d,h':['云孙女婿'], 's,s,s,s,s,s,s,d,s':['耳外孙'], 's,s,s,s,s,s,s,d,s,w':['耳外孙媳妇'], 's,s,s,s,s,s,s,d,d':['耳外孙女'], 's,s,s,s,s,s,s,d,d,h':['耳外孙女婿'], 's,s,s,s,s,s,d':['仍孙女'], 's,s,s,s,s,s,d,h':['仍孙女婿'], 's,s,s,s,s,s,d,s':['云外孙'], 's,s,s,s,s,s,d,s,w':['云外孙媳妇'], 's,s,s,s,s,s,d,d':['云外孙女'], 's,s,s,s,s,s,d,d,h':['云外孙女婿'], 's,s,s,s,s,d':['晜孙女'], 's,s,s,s,s,d,h':['晜孙女婿'], 's,s,s,s,s,d,s':['仍外孙'], 's,s,s,s,s,d,s,w':['仍外孙媳妇'], 's,s,s,s,s,d,d':['仍外孙女'], 's,s,s,s,s,d,d,h':['仍外孙女婿'], 's,s,s,s,d':['来孙女'], 's,s,s,s,d,h':['来孙女婿'], 's,s,s,s,d,s':['晜外孙'], 's,s,s,s,d,s,w':['晜外孙媳妇'], 's,s,s,s,d,d':['晜外孙女'], 's,s,s,s,d,d,h':['晜外孙女婿'], 's,s,s,d':['玄孙女','元孙女','膀孙女'], 's,s,s,d,h':['玄孙女婿'], 's,s,s,d,s':['来外孙'], 's,s,s,d,s,w':['来外孙媳妇'], 's,s,s,d,d':['来外孙女'], 's,s,s,d,d,h':['来外孙女婿'], 's,s,d':['曾孙女','重孙女','息女'], 's,s,d,h':['曾孙女婿'], 's,s,d,s':['玄外孙'], 's,s,d,s,w':['玄外孙媳妇'], 's,s,d,d':['玄外孙女'], 's,s,d,d,h':['玄外孙女婿'], 's,d':['孙女','孙女儿','孙囡','大孙女','x孙女'], 's,d,h':['孙女婿','孙婿','孙息婿','x孙婿'], 's,d,s':['曾外孙','外息仔'], 's,d,s,w':['曾外孙媳妇'], 's,d,s,s':['曾外曾孙'], 's,d,s,s,w':['曾外曾孙媳妇'], 's,d,s,d':['曾外曾孙女'], 's,d,s,d,h':['曾外曾孙女婿'], 's,d,d':['曾外孙女','外息女'], 's,d,d,h':['曾外孙女婿'], 's,d,d,s':['曾外曾外孙'], 's,d,d,s,w':['曾外曾外孙媳妇'], 's,d,d,d':['曾外曾外孙女'], 's,d,d,d,h':['曾外曾外孙女婿'], 'd':['女儿','千金','掌上明珠','息女','闺女','囡女','乖囡','囡囡','丫头','姑娘','女亲','长女','次女','幼女','女','阿女','女女','x女儿'], 'd,h':['女婿','姑爷','女婿子','女婿儿','儿婿','子婿','息婿','囝婿','x女婿'], 'd,s':['外孙','外孙子'], 'd,s,w':['外孙媳妇','外孙妇','外孙新妇'], 'd,s,s':['外曾孙','重外孙','外息仔'], 'd,s,s,w':['外曾孙媳妇','外曾孙妇'], 'd,s,s,s':['外玄孙','外元孙','外膀孙'], 'd,s,s,s,w':['外玄孙媳妇'], 'd,s,s,d':['外玄孙女','外元孙女','外膀孙女'], 'd,s,s,d,h':['外玄孙女婿'], 'd,s,d':['外曾孙女','重外孙女','外息女'], 'd,s,d,h':['外曾孙女婿','重外孙女婿'], 'd,s,d,s':['外玄外孙'], 'd,s,d,s,w':['外玄外孙媳妇'], 'd,s,d,d':['外玄外孙女'], 'd,s,d,d,h':['外玄外孙女婿'], 'd,d':['外孙女','外孙囡'], 'd,d,h':['外孙女婿','外孙婿'], 'd,d,s':['外曾外孙','外息仔'], 'd,d,s,w':['外曾外孙媳妇'], 'd,d,s,s':['外曾外曾孙'], 'd,d,s,s,w':['外曾外曾孙媳妇'], 'd,d,s,d':['外曾外曾孙女'], 'd,d,s,d,h':['外曾外曾孙女婿'], 'd,d,d':['外曾外孙女','外息女'], 'd,d,d,h':['外曾外孙女婿'], 'd,d,d,s':['外曾外曾外孙'], 'd,d,d,s,w':['外曾外曾外孙媳妇'], 'd,d,d,d':['外曾外曾外孙女'], 'd,d,d,d,h':['外曾外曾外孙女婿'], }; /* * 【分支标签】 - 仅内部使用 * {G1M}:父辈旁系(男); {G1W}:父辈旁系(女); {G1}:父辈旁系(后代); {G0}:同辈旁系; * {M1M}:父辈姻亲(姻); {M1W}:父辈姻亲(眷); {M0}:同辈姻亲; {M-1}:子辈姻亲; {M-2}:孙辈姻亲; * ?:称呼中前缀占位符,没有默认为头部 */ // 分支前缀 var _prefix = { '{G1}':{ 'f,xb':['堂','同堂','从父','叔伯','从'], 'f,xs':['姑表','姑家'], 'm,xb':['舅表','舅家'], 'm,xs':['姨','从母','从','姨家'], 'f,f,xb,s':['从堂','再从父','再从','从祖'], 'f,f,xb,d':['堂姑表','从父姑表'], 'f,f,xs,s':['姑表叔表'], 'f,f,xs,d':['姑表姑表'], 'f,m,xb,s':['舅表叔表'], 'f,m,xb,d':['舅表姑表'], 'f,m,xs,s':['从母叔表'], 'f,m,xs,d':['从母姑表'], 'm,f,xb,s':['堂舅表','从父舅表'], 'm,f,xb,d':['堂姨表',,'从父姨表'], 'm,f,xs,s':['姑表舅表'], 'm,f,xs,d':['姑表姨表'], 'm,m,xb,s':['舅表舅表'], 'm,m,xb,d':['舅表姨表'], 'm,m,xs,s':['从母舅表'], 'm,m,xs,d':['再从母','姨姨'], 'f,f,f,xb,s,s':['再从堂','三从父','族'], 'm,m,m,xs,d,d':['三从母'], 'f,f,f,f,xb,s,s,s':['三从堂','四从父'], 'm,m,m,m,xs,d,d,d':['四从母'], }, '{G1M}':{ 'f,ob':['伯'], 'f,lb':['叔'], 'm,xb':['舅'], 'f,f,xb,s&o':['堂伯','从父伯','叔伯伯','从伯'], 'f,f,xb,s&l':['堂叔','从父叔','叔伯叔','从叔'], 'f,f,f,xb,s,s&o':['从堂伯'], 'f,f,f,xb,s,s&l':['从堂叔'], 'f,f,xs,s&o':['姑表伯'], 'f,f,xs,s&l':['姑表叔'], 'f,m,xb,s&o':['舅表伯'], 'f,m,xb,s&l':['舅表叔'], 'f,m,xs,s&o':['姨伯','从母伯','从伯'], 'f,m,xs,s&l':['姨叔','从母叔','从叔'], 'm,f,xb,s':['堂舅','从父舅'], 'm,f,xs,s':['姑表舅'], 'm,m,xb,s':['舅表舅'], 'm,m,xs,s':['姨舅','从母舅'], }, '{G1W}':{ 'f,xs':['姑'], 'm,xs':['姨'], 'f,f,xb,d':['堂姑','从父姑'], 'f,f,f,xb,s,d':['从堂姑'], 'f,f,xs,d':['姑表姑'], 'f,m,xb,d':['舅表姑'], 'f,m,xs,d':['姨姑','从母姑'], 'm,f,xb,d':['堂姨','从父姨'], 'm,f,xs,d':['姑表姨'], 'm,m,xb,d':['舅表姨'], 'm,m,xs,d':['姨姨','从母姨'], }, '{G0}':{ 'xb':['侄'], 'h,xb':['叔侄'], 'w,xb':['舅侄'], 'xs':['甥'], 'h,xs':['姑甥'], 'w,xs':['姨甥'], }, '{M1W}':{ 'f,xb,w':['叔眷'], 'f,f,xb,s,w':['从父叔眷'], 'f,f,xs,s,w':['姑表叔眷'], 'f,m,xb,s,w':['舅表叔眷'], 'f,m,xs,s,w':['姨表叔眷'], 'm,xb,w':['舅眷'], 'm,f,xb,s,w':['从父舅眷'], 'm,f,xs,s,w':['姑表舅眷'], 'm,m,xb,s,w':['舅表舅眷'], 'm,m,xs,s,w':['姨表舅眷'], }, '{M1M}':{ 'f,xs,h':['姑姻'], 'f,f,xb,d,h':['从父姑姻'], 'f,f,xs,d,h':['姑表姑姻'], 'f,m,xb,d,h':['舅表姑姻'], 'f,m,xs,d,h':['姨表姑姻'], 'm,xs,h':['姨姻'], 'm,f,xb,d,h':['从父姨姻'], 'm,f,xs,d,h':['姑表姨姻'], 'm,m,xb,d,h':['舅表姨姻'], 'm,m,xs,d,h':['姨表姨姻'], }, '{M0}':{ 'xb,w':['兄弟眷'], 'xs,h':['姊妹姻'], 'w,xb,w':['内兄弟眷'], 'w,xs,h':['内姊妹姻'], 'h,xb,w':['外兄弟眷'], 'h,xs,h':['外姊妹姻'], 'f,xb,s,w':['从父兄弟眷'], 'f,xb,d,h':['从父姊妹姻'], 'f,xs,s,w':['姑表兄弟眷'], 'f,xs,d,h':['姑表姊妹姻'], 'm,xb,s,w':['舅表兄弟眷'], 'm,xb,d,h':['舅表姊妹姻'], 'm,xs,s,w':['从母兄弟眷'], 'm,xs,d,h':['从母姊妹姻'], }, '{M-1}':{ 's,w':['男眷','息眷'], 'd,h':['女姻','息姻'], 'xb,s,w':['侄眷'], 'xb,d,h':['侄姻'], 'xs,s,w':['甥眷'], 'xs,d,h':['甥姻'], 'f,xb,s,s,w':['堂侄眷'], 'f,xb,s,d,h':['堂侄姻'], 'f,xb,d,s,w':['堂甥眷'], 'f,xb,d,d,h':['堂甥姻'], 'f,xs,s,s,w':['姑表侄眷'], 'f,xs,s,d,h':['姑表侄姻'], 'f,xs,d,s,w':['姑表甥眷'], 'f,xs,d,d,h':['姑表甥姻'], 'm,xb,s,s,w':['舅表侄眷'], 'm,xb,s,d,h':['舅表侄姻'], 'm,xb,d,s,w':['舅表甥眷'], 'm,xb,d,d,h':['舅表甥姻'], 'm,xb,s,s,w':['姨侄眷'], 'm,xb,s,d,h':['姨侄姻'], 'm,xb,d,s,w':['姨甥眷'], 'm,xb,d,d,h':['姨甥姻'], }, '{M-2}':{ 's,s,w':['孙眷'], 's,d,h':['孙姻'], 'd,s,w':['外孙眷'], 'd,d,h':['外孙姻'], 'xb,s,s,w':['侄孙眷'], 'xb,s,d,h':['侄孙姻'], 'xb,d,s,w':['侄外孙眷'], 'xb,d,d,h':['侄外孙姻'], 'xs,s,s,w':['甥孙眷'], 'xs,s,d,h':['甥孙姻'], 'xs,d,s,w':['甥外孙眷'], 'xs,d,d,h':['甥外孙姻'], } }; // 分支关系链 var _branch = { 'f,f,f,f,f,f,f,f,{G1M}':['鼻祖父'], 'f,f,f,f,f,f,f,f,{G1M},w':['鼻祖母'], 'f,f,f,f,f,f,f,f,{G1W}':['鼻祖母'], 'f,f,f,f,f,f,f,f,{G1W},h':['鼻祖父'], 'f,f,f,f,f,f,f,{G1M}':['远祖父'], 'f,f,f,f,f,f,f,{G1M},w':['远祖母'], 'f,f,f,f,f,f,f,{G1W}':['远祖母'], 'f,f,f,f,f,f,f,{G1W},h':['远祖父'], 'f,f,f,f,f,f,{G1M}':['太祖父'], 'f,f,f,f,f,f,{G1M},w':['太祖母'], 'f,f,f,f,f,f,{G1W}':['姑太祖母'], 'f,f,f,f,f,f,{G1W},h':['姑太祖父'], 'f,f,f,f,f,{G1M}':['烈祖父'], 'f,f,f,f,f,{G1M},w':['烈祖母'], 'f,f,f,f,f,{G1W}':['烈祖母'], 'f,f,f,f,f,{G1W},h':['烈祖父'], 'f,f,f,f,{G1M}':['天祖父'], 'f,f,f,f,{G1M},w':['天祖母'], 'f,f,f,f,{G1W}':['天祖母'], 'f,f,f,f,{G1W},h':['天祖父'], 'f,f,f,{G1M}':['高祖父'], 'f,f,f,{G1M},w':['高祖母'], 'f,f,f,{G1W}':['高祖母'], 'f,f,f,{G1W},h':['高祖父'], 'f,f,{G1M}':['?曾祖父','曾?祖父','?太公','太?公','?公太','太?爷','?太爷','?太爷爷','太?爷爷'], 'f,f,{G1M},w':['?曾祖母','曾?祖母','?太婆','太?婆','?婆太','太?奶','?太奶','?太奶奶','太?奶奶'], 'f,f,{G1W}':['?曾祖母','曾?祖母','?太婆','太?婆','?婆太','太?奶','?太奶','?太奶奶','太?奶奶'], 'f,f,{G1W},h':['?曾祖父','曾?祖父','?太公','太?公','?公太','太?爷','?太爷','?太爷爷','太?爷爷'], 'f,m,{G1M}':['?曾外祖父','曾外?祖父','?太外公','太外?公','太外?爷','?太外爷','?太外爷爷','太外?爷爷'], 'f,m,{G1M},w':['?曾外祖母','曾外?祖母','?太外婆','太外?婆','太外?奶','?太外奶','?太外奶奶','太外?奶奶'], 'f,m,{G1W}':['?曾外祖母','曾外?祖母','?太外婆','太外?婆','太外?奶','?太外奶','?太外奶奶','太外?奶奶'], 'f,m,{G1W},h':['?曾外祖父','曾外?祖父','?太外公','太外?公','太外?爷','?太外爷','?太外爷爷','太外?爷爷'], 'm,f,{G1M}':['?外曾祖父','外曾?祖父','?外太公','外太?公','外太?爷','?外太爷','?外太爷爷','外太?爷爷'], 'm,f,{G1M},w':['?外曾祖母','外曾?祖母','?外太婆','外太?婆','外太?奶','?外太奶','?外太奶奶','外太?奶奶'], 'm,f,{G1W}':['?外曾祖母','外曾?祖母','?外太婆','外太?婆','外太?奶','?外太奶','?外太奶奶','外太?奶奶'], 'm,f,{G1W},h':['?外曾祖父','外曾?祖父','?外太公','外太?公','外太?爷','?外太爷','?外太爷爷','外太?爷爷'], 'm,m,{G1M}':['?外曾外祖父','外曾外?祖父','?外太外公','外太外?公','外太外?爷','?外太外爷','?外太外爷爷','外太外?爷爷'], 'm,m,{G1M},w':['?外曾外祖母','外曾外?祖母','?外太外婆','外太外?婆','外太外?奶','?外太外奶','?外太外奶奶','外太外?奶奶'], 'm,m,{G1W}':['?外曾外祖母','外曾外?祖母','?外太外婆','外太外?婆','外太外?奶','?外太外奶','?外太外奶奶','外太外?奶奶'], 'm,m,{G1W},h':['?外曾外祖父','外曾外?祖父','?外太外公','外太外?公','外太外?爷','?外太外爷','?外太外爷爷','外太?外爷爷'], 'f,{G1M}':['公','祖父','奶爷','爷爷','老爷','爷'], 'f,{G1M},w':['婆','祖母','奶奶','奶'], 'f,{G1W}':['婆','祖母','奶奶','奶'], 'f,{G1W},h':['公','祖父','奶爷','爷'], 'm,{G1M}':['外?公','外祖父','姥爷'], 'm,{G1M},w':['外?婆','外祖母','姥姥'], 'm,{G1W}':['外?婆','外祖母','姥姥'], 'm,{G1W},h':['外?公','外祖父','姥爷'], 'f,{G1},s&o':['伯父','伯伯','伯'], 'f,{G1},s&o,w':['伯母'], 'f,{G1},s&l':['叔父','叔爸','叔叔','叔'], 'f,{G1},s&l,w':['叔母','婶'], 'f,{G1},d':['姑母','姑姑','姑妈','姑'], 'f,{G1},d,h':['姑父'], 'm,{G1},s':['舅父','舅舅','舅爸','舅'], 'm,{G1},s,w':['舅母','舅妈'], 'm,{G1},d':['姨母','姨姨','姨妈','姨'], 'm,{G1},d,h':['姨父','姨爸','姨丈'], '{G1},s&o':['哥'], '{G1},s&o,w':['嫂','兄妇'], '{G1},s&l':['弟'], '{G1},s&l,w':['弟媳','弟妇'], '{G1},s':['兄弟'], '{G1},s,s':['侄男'], '{G1},s,s,w':['侄妇'], '{G1},s,s,s':['侄孙男'], '{G1},s,s,s,w':['侄孙妇'], '{G1},s,s,d':['侄孙女'], '{G1},s,s,d,h':['侄孙婿'], '{G1},s,d':['侄女'], '{G1},s,d,h':['侄婿'], '{G1},s,d,s':['侄外孙男'], '{G1},s,d,s,w':['侄外孙妇'], '{G1},s,d,d':['侄外孙女'], '{G1},s,d,d,h':['侄外孙婿'], '{G1},d&o':['姐'], '{G1},d&o,h':['姐夫'], '{G1},d&l':['妹'], '{G1},d&l,h':['妹夫'], '{G1},d':['姐妹'], '{G1},d,s':['甥男'], '{G1},d,s,w':['甥妇'], '{G1},d,s,s':['甥孙男'], '{G1},d,s,s,w':['甥孙妇'], '{G1},d,s,d':['甥孙女'], '{G1},d,s,d,h':['甥孙婿'], '{G1},d,d':['甥女'], '{G1},d,d,h':['甥婿'], '{G1},d,d,s':['甥外孙男'], '{G1},d,d,s,w':['甥外孙妇'], '{G1},d,d,d':['甥外孙女'], '{G1},d,d,d,h':['甥外孙婿'], 'h,f,{G1M}':['祖公父','祖公','祖翁'], 'h,f,{G1M},w':['祖婆母','祖婆','祖姆'], 'h,{G1M}':['公父','公公'], 'h,{G1M},w':['婆母','婆婆'], 'h,{G1W}':['婆母','婆婆'], 'h,{G1W},h':['公父','公公'], 'h,{G1},s&o':['大伯子','大伯兄'], 'h,{G1},s&o,w':['大婶子','大伯嫂'], 'h,{G1},s&l':['小叔子','小叔弟'], 'h,{G1},s&l,w':['小婶子','小叔弟妇'], 'h,{G1},d&o':['大姑子','大姑姐'], 'h,{G1},d&o,h':['大姑夫','大姑姐夫'], 'h,{G1},d&l':['小姑子','小姑妹'], 'h,{G1},d&l,h':['小姑夫','小姑妹夫'], 'w,f,{G1M}':['祖岳父','太?岳','祖丈人','爷丈人','奶爷丈人'], 'w,f,{G1M},w':['祖岳母','太?岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'], 'w,f,{G1W}':['祖岳母',,'太?岳母','祖丈母','祖丈母娘','奶丈母娘','奶丈母'], 'w,f,{G1W},h':['祖岳父',,'太?岳父','祖丈人','爷丈人','奶爷丈人'], 'm,f,{G1M}':['外祖岳父','太外?岳','外祖丈人','姥爷丈人'], 'm,f,{G1M},w':['外祖岳母','太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'], 'm,f,{G1W}':['外祖岳母',,'太外?岳母','外祖丈母','外祖丈母娘','姥丈母娘','姥丈母'], 'm,f,{G1W},h':['外祖岳父',,'太外?岳父','外祖丈人','外爷丈人','姥爷丈人'], 'w,{G1M}':['岳父','丈人','丈人爹'], 'w,{G1M},w':['岳母','丈母','丈母娘'], 'w,{G1W}':['岳母','丈母','丈母娘'], 'w,{G1W},h':['岳父','丈人','丈人爹'], 'w,{G1},s&o':['大舅子','大舅兄','舅兄'], 'w,{G1},s&o,w':['大舅妇','大舅兄妇','舅兄妇','舅姐','大舅姐','大妗子'], 'w,{G1},s&l':['小舅子','小舅弟','舅弟'], 'w,{G1},s&l,w':['小舅妇','小舅弟妇','舅弟妇','舅妹','小舅妹','小妗子'], 'w,{G1},d&o':['大姨子','大姨姐','姨姐'], 'w,{G1},d&o,h':['大姨夫','大姨姐夫','襟兄','姨兄','大姨哥','大尹子'], 'w,{G1},d&l':['小姨子','小姨妹','姨妹'], 'w,{G1},d&l,h':['小姨夫','小姨妹夫','襟弟','姨弟','小姨弟','小尹子'], '{X0},f,ob':['伯父','伯伯','伯'], '{X0},f,ob,w':['伯母'], '{X0},f,lb':['叔父','叔叔','叔'], '{X0},f,lb,w':['叔母','婶'], '{X0},f,xs':['姑母','姑姑','姑妈','姑'], '{X0},f,xs,h':['姑父','姑爸','姑丈'], '{X0},m,xb':['舅父','舅舅','舅爸','舅'], '{X0},m,xb,w':['舅母','舅妈'], '{X0},m,xs':['姨母','姨姨','姨妈','姨'], '{X0},m,xs,h':['姨父','姨爸','姨丈'], '{G0},s':['男','男儿','儿','子'], '{G0},s,w':['媳妇','妇'], '{G0},s,s':['孙','孙男','孙子'], '{G0},s,s,w':['孙妇'], '{G0},s,s,s':['曾孙','曾孙男'], '{G0},s,s,s,w':['曾孙妇'], '{G0},s,s,s,s':['玄孙','玄孙男'], '{G0},s,s,s,d':['玄孙女'], '{G0},s,s,d':['曾孙女'], '{G0},s,s,d,h':['曾孙婿'], '{G0},s,s,d,s':['玄外孙','玄外孙男'], '{G0},s,s,d,d':['玄外孙女'], '{G0},s,d':['孙女'], '{G0},s,d,w':['孙婿'], '{G0},s,d,s':['曾外孙','曾外孙男'], '{G0},s,d,s,w':['曾外孙妇'], '{G0},s,d,s,s':['曾外曾孙','曾外曾孙男'], '{G0},s,d,s,d':['曾外曾孙女'], '{G0},s,d,d':['曾外孙女'], '{G0},s,d,d,h':['曾外孙婿'], '{G0},s,d,d,s':['曾外曾外孙','曾外曾外孙男'], '{G0},s,d,d,d':['曾外曾外孙女'], '{G0},d':['女','女儿'], '{G0},d,s':['外孙','外孙男'], '{G0},d,s,w':['外孙妇'], '{G0},d,s,s':['外曾孙','外曾孙男'], '{G0},d,s,s,w':['外曾孙妇'], '{G0},d,s,s,s':['外玄孙','外玄孙男'], '{G0},d,s,s,d':['外玄孙女'], '{G0},d,s,d':['外曾孙女'], '{G0},d,s,d,h':['外曾孙婿'], '{G0},d,s,d,s':['外玄外孙','外玄外孙男'], '{G0},d,s,d,d':['外玄外孙女'], '{G0},d,d':['外孙女'], '{G0},d,d,w':['外孙婿'], '{G0},d,d,s':['外曾外孙','外曾外孙男'], '{G0},d,d,s,w':['外曾外孙妇'], '{G0},d,d,s,s':['外曾外曾孙','外曾外曾孙男'], '{G0},d,d,s,d':['外曾外曾孙女'], '{G0},d,d,d':['外曾外孙女'], '{G0},d,d,d,h':['外曾外孙婿'], '{G0},d,d,d,s':['外曾外曾外孙'], '{G0},d,d,d,d':['外曾外曾外孙女'], '{M1W},f':['外祖父'], '{M1W},m':['外祖母'], '{M1W},xb':['舅父'], '{M1W},xb,w':['舅母'], '{M1W},xb,s&o':['舅表哥'], '{M1W},xb,s&o,w':['舅表嫂'], '{M1W},xb,s&l':['舅表弟'], '{M1W},xb,s&l,w':['舅表弟妇'], '{M1W},xb,s,s':['侄男'], '{M1W},xb,s,s,w':['侄妇'], '{M1W},xb,s,d':['侄女'], '{M1W},xb,s,d,h':['侄婿'], '{M1W},xb,d&o':['舅表姐'], '{M1W},xb,d&o,h':['舅表姐夫'], '{M1W},xb,d&l':['舅表妹'], '{M1W},xb,d&l,h':['舅表妹夫'], '{M1W},xb,d,s':['甥男'], '{M1W},xb,d,s,w':['甥妇'], '{M1W},xb,d,d':['甥女'], '{M1W},xb,d,d,h':['甥婿'], '{M1W},xs':['姨母'], '{M1W},xs,h':['姨父'], '{M1W},xs,s&o':['姨表哥'], '{M1W},xs,s&o,w':['姨表嫂'], '{M1W},xs,s&l':['姨表弟'], '{M1W},xs,s&l,w':['姨表弟妇'], '{M1W},xs,d&o':['姨表姐'], '{M1W},xs,d&o,h':['姨表姐夫'], '{M1W},xs,d&l':['姨表妹'], '{M1W},xs,d&l,h':['姨表妹夫'], '{M1M},f':['祖父'], '{M1M},m':['祖母'], '{M1M},ob':['伯父'], '{M1M},ob,w':['伯母'], '{M1M},lb':['叔父'], '{M1M},lb,w':['叔母'], '{M1M},xb,s&o':['叔表哥'], '{M1M},xb,s&o,w':['叔表嫂'], '{M1M},xb,s&l':['叔表弟'], '{M1M},xb,s&l,w':['叔表弟妇'], '{M1M},xb,s,s':['侄男'], '{M1M},xb,s,s,w':['侄妇'], '{M1M},xb,s,d':['侄女'], '{M1M},xb,s,d,h':['侄婿'], '{M1M},xb,d&o':['叔表姐'], '{M1M},xb,d&o,h':['叔表姐夫'], '{M1M},xb,d&l':['叔表妹'], '{M1M},xb,d&l,h':['叔表妹夫'], '{M1M},xb,d,s':['甥男'], '{M1M},xb,d,s,w':['甥妇'], '{M1M},xb,d,d':['甥女'], '{M1M},xb,d,d,h':['甥婿'], '{M1M},xs':['姑母'], '{M1M},xs,h':['姑父'], '{M1M},xs,s&o':['姑表哥'], '{M1M},xs,s&o,w':['姑表嫂'], '{M1M},xs,s&l':['姑表弟'], '{M1M},xs,s&l,w':['姑表弟妇'], '{M1M},xs,d&o':['姑表姐'], '{M1M},xs,d&o,h':['姑表姐夫'], '{M1M},xs,d&l':['姑表妹'], '{M1M},xs,d&l,h':['姑表妹夫'], '{M0},f':['父'], '{M0},f,f':['祖父'], '{M0},f,f,ob':['伯祖父'], '{M0},f,f,ob,w':['伯祖母'], '{M0},f,f,lb':['叔祖父'], '{M0},f,f,lb,w':['叔祖母'], '{M0},f,f,xs':['姑祖母'], '{M0},f,f,xs,h':['姑祖父'], '{M0},f,m':['祖母'], '{M0},f,m,xb':['舅祖父'], '{M0},f,m,xb,w':['舅祖母'], '{M0},f,m,xs':['姨祖母'], '{M0},f,m,xs,h':['姨祖父'], '{M0},f,ob':['伯父'], '{M0},f,ob,w':['伯母'], '{M0},f,lb':['叔父'], '{M0},f,lb,w':['叔母'], '{M0},f,xb,s&o':['叔表兄'], '{M0},f,xb,s&o,w':['叔表兄妇'], '{M0},f,xb,s&l':['叔表弟'], '{M0},f,xb,s&l,w':['叔表弟妇'], '{M0},f,xb,d&o':['叔表姊'], '{M0},f,xb,d&o,h':['叔表姊婿'], '{M0},f,xb,d&l':['叔表妹'], '{M0},f,xb,d&l,h':['叔表妹婿'], '{M0},f,xs':['姑母'], '{M0},f,xs,h':['姑父'], '{M0},f,xs,s&o':['姑表兄'], '{M0},f,xs,s&o,w':['姑表兄妇'], '{M0},f,xs,s&l':['姑表弟'], '{M0},f,xs,s&l,w':['姑表弟妇'], '{M0},f,xs,d&o':['姑表姊'], '{M0},f,xs,d&o,h':['姑表姊婿'], '{M0},f,xs,d&l':['姑表妹'], '{M0},f,xs,d&l,h':['姑表妹婿'], '{M0},m':['母'], '{M0},m,f':['外祖父'], '{M0},m,f,ob':['伯外祖父'], '{M0},m,f,ob,w':['伯外祖母'], '{M0},m,f,lb':['叔外祖父'], '{M0},m,f,lb,w':['叔外祖母'], '{M0},m,f,xs':['姑外祖母'], '{M0},m,f,xs,h':['姑外祖父'], '{M0},m,m':['外祖母'], '{M0},m,m,xb':['舅外祖父'], '{M0},m,m,xb,w':['舅外祖母'], '{M0},m,m,xs':['姨外祖母'], '{M0},m,m,xs,h':['姨外祖父'], '{M0},m,xb':['舅父'], '{M0},m,xb,w':['舅母'], '{M0},m,xb,s&o':['舅表兄'], '{M0},m,xb,s&o,w':['舅表兄妇'], '{M0},m,xb,s&l':['舅表弟'], '{M0},m,xb,s&l,w':['舅表弟妇'], '{M0},m,xb,d&o':['舅表姊'], '{M0},m,xb,d&o,h':['舅表姊婿'], '{M0},m,xb,d&l':['舅表妹'], '{M0},m,xb,d&l,h':['舅表妹婿'], '{M0},m,xs':['姨母'], '{M0},m,xs,h':['姨父'], '{M0},m,xs,s&o':['姨表兄'], '{M0},m,xs,s&o,w':['姨表兄妇'], '{M0},m,xs,s&l':['姨表弟'], '{M0},m,xs,s&l,w':['姨表弟妇'], '{M0},m,xs,d&o':['姨表姊'], '{M0},m,xs,d&o,h':['姨表姊婿'], '{M0},m,xs,d&l':['姨表妹'], '{M0},m,xs,d&l,h':['姨表妹婿'], '{M0},xb&o':['兄'], '{M0},xb&o,w':['兄妇'], '{M0},xb&l':['弟'], '{M0},xb&l,w':['弟妇'], '{M0},xb,s':['侄男'], '{M0},xb,s,w':['侄妇'], '{M0},xb,d':['侄女'], '{M0},xb,d,h':['侄婿'], '{M0},xs&o':['姊'], '{M0},xs&o,h':['姊婿'], '{M0},xs&l':['妹'], '{M0},xs&l,h':['妹婿'], '{M0},xs,s':['甥男'], '{M0},xs,s,w':['甥妇'], '{M0},xs,d':['甥女'], '{M0},xs,d,h':['甥婿'], '{M-1},f&o':['兄'], '{M-1},f&l':['弟'], '{M-1},f,f':['父'], '{M-1},f,f,f':['祖父'], '{M-1},f,f,m':['祖母'], '{M-1},f,f,ob':['伯父'], '{M-1},f,f,ob,w':['伯母'], '{M-1},f,f,lb':['叔父'], '{M-1},f,f,lb,w':['叔母'], '{M-1},f,m':['母'], '{M-1},f,m,f':['外祖父'], '{M-1},f,m,m':['外祖母'], '{M-1},f,ob':['叔兄'], '{M-1},f,ob,w':['叔兄妇'], '{M-1},f,lb':['叔弟'], '{M-1},f,lb,w':['叔弟妇'], '{M-1},f,xb,s':['叔男'], '{M-1},f,xb,d':['叔女'], '{M-1},f,os':['姑姊'], '{M-1},f,os,h':['姑姊婿'], '{M-1},f,ls':['姑妹'], '{M-1},f,ls,h':['姑妹婿'], '{M-1},f,xs,s':['姑男'], '{M-1},f,xs,d':['姑女'], '{M-1},m&o':['姊'], '{M-1},m&l':['妹'], '{M-1},m,f':['父'], '{M-1},m,f,f':['祖父'], '{M-1},m,f,m':['祖母'], '{M-1},m,m':['母'], '{M-1},m,m,f':['外祖父'], '{M-1},m,m,m':['外祖母'], '{M-1},m,ob':['舅兄'], '{M-1},m,ob,w':['舅兄妇'], '{M-1},m,lb':['舅弟'], '{M-1},m,lb,w':['舅弟妇'], '{M-1},m,xb,s':['舅男'], '{M-1},m,xb,d':['舅女'], '{M-1},m,os':['姨姊'], '{M-1},m,os,h':['姨姊婿'], '{M-1},m,ls':['姨妹'], '{M-1},m,ls,h':['姨妹婿'], '{M-1},m,xs,s':['姨男'], '{M-1},m,xs,d':['姨女'], '{M-1},xb':['男'], '{M-1},xb,w':['妇'], '{M-1},xb,s':['孙男'], '{M-1},xb,s,w':['孙妇'], '{M-1},xb,d':['孙女'], '{M-1},xb,d,h':['孙婿'], '{M-1},xs':['女'], '{M-1},xs,h':['婿'], '{M-1},xs,s':['外孙男'], '{M-1},xs,s,w':['外孙妇'], '{M-1},xs,d':['外孙女'], '{M-1},xs,d,h':['外孙婿'], '{M-2},f':['男'], '{M-2},f,f&o':['兄'], '{M-2},f,f&l':['弟'], '{M-2},f,m&o':['姊'], '{M-2},f,m&l':['妹'], '{M-2},m':['女'], '{M-2},m,f&o':['兄'], '{M-2},m,f&l':['弟'], '{M-2},m,m&o':['姊'], '{M-2},m,m&l':['妹'], '{M-2},xb':['孙男'], '{M-2},xb,w':['孙妇'], '{M-2},xs':['孙女'], '{M-2},xs,h':['孙婿'], } // 数据 var _map = {}; // 默认数据 var _mode = {}; // 模式数据 var _data = {}; // 最终数据 // 数组去重 function unique(arr){ var sameList = arr.filter(item=>item==item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,'')); return arr.filter(item=>{ var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); return sameList.indexOf(item)>-1||item!=temp&&sameList.indexOf(temp)==-1; }).filter((item,idx,arr) => arr.indexOf(item) === idx); } // 中文获取选择器 function getSelectors(str){ str = str.replace(/[二|三|四|五|六|七|八|九|十]{1,2}/g,'x'); str = str.replace(/之/,'的').replace(/我的?(.+)/,'$1'); if(str.match(/[^娘婆岳亲]家的?/)){ str = str.replace(/家的?/,'的'); } var lists = str.split('的'); var result = []; var isMatch = true; // 双向替换 var replaceMap = { '哥':'兄', '姐':'姊', '侄':'姪', '祖父':'王父', '祖母':'王母', '孙女婿':'孙婿', '甥女婿':'甥婿', '侄女婿':'侄婿', '弟媳':'弟妇', '孙媳妇':'孙妇', '甥媳妇':'甥妇', '侄媳妇':'侄妇', }; // 含义扩展 var replaceFilter = { '^表':['姑表','舅表'], '^姻':['姑姻','姨姻','姊妹姻','女姻'], '^眷':['叔眷','舅眷','兄弟眷','男眷'], '^外甥':['甥'], '^外表伯':['姑表伯外','舅表伯外'], '^外表叔':['姑表叔外','舅表叔外'], '^外表姑':['姑表姑外','舅表姑外'], '^外表舅':['姑表舅外','舅表舅外'], '^外表姨':['姑表姨外','舅表姨外'], '祖$':['祖父','祖母'], '孙$':['孙男','孙女'], '甥$':['甥男','甥女'], '侄$':['侄男','侄女'], '外甥$':['甥'], '嫂$':['兄妇'], }; while(lists.length){ var name = lists.shift(); //当前匹配词 var items = []; //当前匹配词可能性 var keywords = [name]; for(var word in replaceMap){ var name1 = name.replace(word,replaceMap[word]); var name2 = name.replace(replaceMap[word],word); if(name1!=name){ keywords.push(name1); } if(name2!=name){ keywords.push(name2); } } var getList = function(name){ for(var filter in replaceFilter){ var word_list = replaceFilter[filter]; word_list.forEach(function(word){ var name1 = name.replace(new RegExp(filter),word); if(name1!=name){ keywords.push(name1); getList(name1); } }); } }; getList(name); // 是否存在该关系 keywords.forEach(function(name){ for(var i in _data){ if(_data[i].indexOf(name)>-1){ items.push(i); } } }); if(!items.length){ isMatch = false; } var res = []; if(!result.length){ result = ['']; } result.forEach(function(a){ items.forEach(function(b){ res.push(a+(b?','+b:'')); }); }); result = res; } return isMatch?result:[]; } // 选择器转ID function selector2id(selector,sex){ var result = []; var hash = {}; //性别判断 if(sex<0){ if(selector.match(/^,w/)){ sex = 1; }else if(selector.match(/^,h/)){ sex = 0; } } // console.log('[selector]',selector); var getId = function(selector,sex){ if(sex>-1&&selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){ selector = ','+sex+selector; } if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除 return false; } var s=''; if(!hash[selector]){ hash[selector] = true; do{ s = selector; for(var i in _filter){ var item = _filter[i]; // console.log('[filter]',item['exp'],selector); selector = selector.replace(item['exp'],item['str']); if(selector.indexOf('#')>-1){ selector.split('#').forEach(getId); return false; } } }while(s!=selector); if(selector.match(/,[w0],w|,[h1],h/)){ //同志关系去除 return false; } selector = selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息 result.push(selector); } } getId(selector,sex); return unique(result); } // 通过ID获取数据 function getDataById(id){ var items = []; var getData = function(d){ var res = []; if(_data[d]){ res.push(_data[d][0]); }else{ for(var i in _data){ if(i.replace(/&[ol]/g,'')==d){ res.push(_data[i][0]); }else{ var expr = d; while (expr.match(/[ol](b|s)/)){ expr = expr.replace(/[ol](b|s)/,'x$1'); if(expr==i){ res.push(_data[i][0]); break; } } } } } return res; }; if(_data[id]){ // 直接匹配称呼 items.push(_data[id][0]); }else{ items = getData(id); // 忽略年龄条件查找 if(!items.length){ id = id.replace(/&[ol]/g,''); items = getData(id); } // 忽略年龄条件查找 if(!items.length){ id = id.replace(/[ol](b|s)/g,'x$1'); items = getData(id); } // 缩小访问查找 if(!items.length){ var l = id.replace(/x/g,'l'); var o = id.replace(/x/g,'o'); items = items.concat(getData(l),getData(o)); } } return items; } // 逆转ID function reverseId(id,sex){ var hash = { f:['d','s'], m:['d','s'], h:['w',''], w:['','h'], s:['m','f'], d:['m','f'], lb:['os','ob'], ob:['ls','lb'], xb:['xs','xb'], ls:['os','ob'], os:['ls','lb'], xs:['xs','xb'] }; var age = ''; if(id.match(/&o$/)){ age = '&l'; }else if(id.match(/&l$/)){ age = '&o'; } if(id){ id = id.replace(/&[ol]/g,''); //性别判断 if(sex<0){ if(id.match(/^w/)){ sex = 1; }else if(id.match(/^h/)){ sex = 0; } } var result = []; var doing = function(sex){ var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0'); sid = sid.substring(0,sid.lastIndexOf(',')); var id_arr = id.split(',').reverse(); var sid_arr = sid.split(',').reverse(); var arr = []; for(var i=0;i-1){ my_sex = to_sex; }else if(from_sex>-1&&to_sex==-1){ my_sex = from_sex; }else if(from_sex==to_sex){ my_sex = from_sex; }else{ return false; } } var sex = my_sex; var from_ids = selector2id(from,my_sex); var to_ids = selector2id(to,my_sex); var from_rids = []; var to_rids = []; if(to){ var toIsMale = false; var toIsFemale = false; to_ids.forEach(function(id){ if(id.match(/([fhs1](&[ol])?|[olx]b)$/)){ toIsMale = true; } if(id.match(/([mwd0](&[ol])?|[olx]s)$/)){ toIsFemale = true; } to_rids = to_rids.concat(reverseId(id,my_sex)); }); to_rids = unique(to_rids); if(toIsMale&&toIsFemale){ sex = -1; }else if(toIsMale){ sex = 1; }else if(toIsFemale){ sex = 0; } }else{ to_rids = ['']; } // console.log('[from_ids]',from_ids,'to_rids',to_rids); var from_selector = from_ids.length>1?'['+from_ids.join('|')+']':from_ids[0]; var to_selector = to_rids.length>1?'['+to_rids.join('|')+']':to_rids[0]; return { 'selector':(to?','+to_selector:'')+(from?','+from_selector:''), 'sex':sex }; } // 数据初始化 // 分支关系 for(var key in _branch){ var tag = key.match(/\{.+?\}/)[0]; var nameList = _branch[key]; for(var k in _prefix[tag]){ var prefixList = _prefix[tag][k]; var newKey = key.replace(tag,k); var isFilter = false; ['h,h','w,w','w,h','h,w'].forEach(function(pair){ if(newKey.indexOf(pair)>-1){ isFilter = true; } }); var newList = []; if(!isFilter){ prefixList.forEach(function(prefix){ nameList.forEach(function(name){ if(name.indexOf('?')>-1){ newList.push(name.replace('?',prefix)); }else{ newList.push(prefix+name); } }); }); _map[newKey] = [].concat(_map[newKey]||[],newList); } } } // 主要关系 for(var key in _main){ _map[key] = [].concat(_main[key],_map[key]||[]); } // 配偶关系 var branch = { 'w':['内','妻','岳','岳家','丈人'], 'h':['外','夫','婆家'], }; var nameList = []; for(var key in _map){ nameList = [].concat(_map[key]); } for(var key in _map){ if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){ for(var k in branch){ var newKey = k+','+key; if(!_map[newKey]){ _map[newKey] = []; } var prefixList = branch[k]; var nameList = _map[key]; prefixList.forEach(function(prefix){ nameList.forEach(function(name){ var newName = prefix+name; if(nameList.indexOf(newName)==-1){ // 配偶组合的称呼不得已原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公) _map[newKey].push(newName); } }); }); } } } _data = Object.assign({},_map); // console.log('[data]',_data); // 对外方法 var relationship = function (parameter){ var options = Object.assign({ text:'', target:'', sex:-1, type:'default', // 'chain'表示关系链 reverse:false, // true表示反向 mode:'default', // 用户自定义模式 },parameter); _data = Object.assign({},_map); for(var lang in _mode){ if(options.mode==lang){ for(var key in _mode[lang]){ _data[key] = [].concat(_mode[lang][key],_map[key]||[]); } } } var from_selectors = getSelectors(options.text); var to_selectors = getSelectors(options.target); if(!to_selectors.length){ to_selectors = ['']; } // console.log('[selectors]',from_selectors,to_selectors); var result = []; //匹配结果 from_selectors.forEach(function(from){ to_selectors.forEach(function(to){ var data = mergeSelector(from,to,options.sex); // console.log('[data]',from,to,data); var ids = data?selector2id(data['selector'],data['sex']):null; // console.log('[ids]',data['selector'],data['sex'],ids); if(ids){ ids.forEach(function(id){ var temps = [id]; if(options.type=='chain'){ if(options.reverse){ temps = reverseId(id,data['sex']); } temps.forEach(function(id){ var item = getChainById(id); if(item){ result.push(item); } }); }else{ if(options.reverse){ temps = reverseId(id,data['sex']); } temps.forEach(function(id){ var items = getDataById(data['sex']+','+id); if(!items.length){ items = getDataById(id); } if(items.length){ result = result.concat(items); } }); } }); } }); }); return unique(result); }; // 获取数据量 relationship.dataCount = Object.keys(_data).length; // 设置语言模式 relationship.setMode = function(sign,data){ _mode[sign] = Object.assign(_mode[sign]||{},data); }; return relationship; });