updated 优化部分代码

This commit is contained in:
PASSER-BY 2022-09-07 23:22:15 +08:00
parent 97aa5f4384
commit 3212d3007e
6 changed files with 28 additions and 50 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -357,24 +357,16 @@ export default {
'h,lb,w':['小婶子','小婶儿','小叔弟妇','叔弟妇','叔嫂','叔妇','叔姆','娣妇','娣姆','小叔妇','婶婶','小婶','小叔妇','小婶婶'], 'h,lb,w':['小婶子','小婶儿','小叔弟妇','叔弟妇','叔嫂','叔妇','叔姆','娣妇','娣姆','小叔妇','婶婶','小婶','小叔妇','小婶婶'],
'h,[ob|lb]':['伯叔'], 'h,[ob|lb]':['伯叔'],
'h,xb,w':['妯娌','娣姒','娣姒姊妹','婶子'], 'h,xb,w':['妯娌','娣姒','娣姒姊妹','婶子'],
'h,xb,s':['叔侄','叔侄男','叔男'], 'h,xb,s':['叔侄'],
'h,xb,d':['叔侄女','叔女'], 'h,xb,d':['叔侄女'],
'h,xb,s,s':['叔侄孙','叔孙','叔侄孙男','叔孙男'],
'h,xb,s,d':['叔侄孙女','叔孙女'],
'h,xb,d,s':['叔侄外孙','叔外孙','叔侄外孙男','叔外孙男'],
'h,xb,d,d':['叔侄外孙女','叔外孙女'],
'h,os':['大姑子','大姑姐','大姑儿','大姑娘','姑姊','婆姐','婆婆姐','大娘姑'], 'h,os':['大姑子','大姑姐','大姑儿','大姑娘','姑姊','婆姐','婆婆姐','大娘姑'],
'h,os,h':['大姑夫','大姑姐夫','大亘子','婆姐夫','婆婆姐夫'], 'h,os,h':['大姑夫','大姑姐夫','大亘子','婆姐夫','婆婆姐夫'],
'h,ls':['小姑子','小姑妹','小姑儿','小姑娘','姑妹','婆妹','婆婆妹'], 'h,ls':['小姑子','小姑妹','小姑儿','小姑娘','姑妹','婆妹','婆婆妹'],
'h,ls,h':['小姑夫','小姑妹夫','小亘子','婆妹夫','婆婆妹夫'], 'h,ls,h':['小姑夫','小姑妹夫','小亘子','婆妹夫','婆婆妹夫'],
'h,xs':['姑子','夫姑'], 'h,xs':['姑子','夫姑'],
'h,xs,h':['姑夫','姑郎'], 'h,xs,h':['姑夫','姑郎'],
'h,xs,s':['姑甥','姑甥男','姑男'], 'h,xs,s':['姑甥'],
'h,xs,d':['姑甥女','姑女'], 'h,xs,d':['姑甥女'],
'h,xs,s,s':['姑甥孙','姑孙','姑甥孙男','姑孙男'],
'h,xs,s,d':['姑甥孙女','姑孙女'],
'h,xs,d,s':['姑甥外孙','姑外孙','姑外孙男','姑外孙男'],
'h,xs,d,d':['姑甥外孙女','姑外孙女'],
// 岳家 // 岳家
'w,f,f,f':['曾祖岳父','曾祖丈人','太爷丈人','祖爷丈人'], 'w,f,f,f':['曾祖岳父','曾祖丈人','太爷丈人','祖爷丈人'],
'w,f,f,m':['曾祖岳母','曾祖丈母','曾祖丈母娘','祖奶丈母娘','太奶丈母娘'], 'w,f,f,m':['曾祖岳母','曾祖丈母','曾祖丈母娘','祖奶丈母娘','太奶丈母娘'],
@ -405,24 +397,16 @@ export default {
'w,lb,w':['小舅妇','小舅姆','小舅弟妇','小舅嫂','舅弟媳','小舅妹','小舅媳妇','小妗子','小妗儿'], 'w,lb,w':['小舅妇','小舅姆','小舅弟妇','小舅嫂','舅弟媳','小舅妹','小舅媳妇','小妗子','小妗儿'],
'w,xb':['舅子','舅佬','妻舅','老婆舅','阿舅','亲家舅','舅老倌'], 'w,xb':['舅子','舅佬','妻舅','老婆舅','阿舅','亲家舅','舅老倌'],
'w,xb,w':['舅嫂','舅妇','舅姆','妻妗','妗仔','妗子','妗儿'], 'w,xb,w':['舅嫂','舅妇','舅姆','妻妗','妗仔','妗子','妗儿'],
'w,xb,s':['舅侄','舅侄男','舅男'], 'w,xb,s':['舅侄'],
'w,xb,d':['舅侄女','舅女'], 'w,xb,d':['舅侄女'],
'w,xb,s,s':['舅侄孙','舅孙','舅侄孙男','舅孙男'],
'w,xb,s,d':['舅侄孙女','舅孙女'],
'w,xb,d,s':['舅侄外孙','舅外孙','舅侄外孙男','舅外孙男'],
'w,xb,d,d':['舅侄外孙女','舅外孙女'],
'w,os':['大姨子','大姨姐','大姨儿','姨姐'], 'w,os':['大姨子','大姨姐','大姨儿','姨姐'],
'w,os,h':['大姨夫','大姨姐夫','襟兄','大尹子'], 'w,os,h':['大姨夫','大姨姐夫','襟兄','大尹子'],
'w,ls':['小姨子','小姨妹','小茙儿','姨妹','姨仔','姨妹子'], 'w,ls':['小姨子','小姨妹','小茙儿','姨妹','姨仔','姨妹子'],
'w,ls,h':['小姨夫','小姨妹夫','小茙夫','襟弟','小尹子'], 'w,ls,h':['小姨夫','小姨妹夫','小茙夫','襟弟','小尹子'],
'w,xs':['姨子','妻姨'], 'w,xs':['姨子','妻姨'],
'w,xs,h':['连襟','连桥','两桥','姨夫','姨夫爷','一担挑','老挑','挑担','担儿挑','连襟儿','妻尹','娅'], 'w,xs,h':['连襟','连桥','两桥','姨夫','姨夫爷','一担挑','老挑','挑担','担儿挑','连襟儿','妻尹','娅'],
'w,xs,s':['姨甥','姨甥男','姨男'], 'w,xs,s':['姨甥'],
'w,xs,d':['姨甥女','姨女'], 'w,xs,d':['姨甥女'],
'w,xs,s,s':['姨甥孙','姨孙','姨甥孙男','姨孙男'],
'w,xs,s,d':['姨甥孙女','姨孙女'],
'w,xs,d,s':['姨甥外孙','姨外孙','姨外孙男','姨外孙男'],
'w,xs,d,d':['姨甥外孙女','姨外孙女'],
// 兄弟姐妹系 // 兄弟姐妹系
'ob':['哥哥','哥','胞兄','亲哥','老哥','依哥','阿哥','家兄','兄长','大佬','元兄','长兄','几哥'], 'ob':['哥哥','哥','胞兄','亲哥','老哥','依哥','阿哥','家兄','兄长','大佬','元兄','长兄','几哥'],
'ob,w':['嫂子','嫂','嫂嫂','阿嫂','家嫂','兄姊','兄嫂','兄妇','兄妻','几嫂'], 'ob,w':['嫂子','嫂','嫂嫂','阿嫂','家嫂','兄姊','兄嫂','兄妇','兄妻','几嫂'],
@ -447,7 +431,7 @@ export default {
'xs,d':['外甥女','甥女','甥囡','甥女儿','甥闺女'], 'xs,d':['外甥女','甥女','甥囡','甥女儿','甥闺女'],
'xs,d,h':['甥女婿','甥婿','甥儿息婿儿'], 'xs,d,h':['甥女婿','甥婿','甥儿息婿儿'],
// 子系 // 子系
's':['儿子','男儿','息男','闺男','囝囝','囝男','小子','娃子','男亲','伢子','长子','次子','幼子','儿','仔','囝','子','阿仔','仔仔','后生','公子','少爷','一世孙'], 's':['儿子','男儿','息男','闺男','囝囝','囝男','囝儿','小子','娃子','男亲','伢子','长子','次子','幼子','儿','仔','囝','子','阿仔','仔仔','后生','公子','少爷','一世孙'],
's,w':['儿媳','儿媳妇','息妇儿','儿媳妇儿','新妇','新妇囝','心抱','息妇','儿妇','子妇','小妇','少奶奶','少夫人'], 's,w':['儿媳','儿媳妇','息妇儿','儿媳妇儿','新妇','新妇囝','心抱','息妇','儿妇','子妇','小妇','少奶奶','少夫人'],
's,w,f':['亲家公'], 's,w,f':['亲家公'],
's,w,f,f&o':['姻伯'], 's,w,f,f&o':['姻伯'],
@ -553,7 +537,7 @@ export default {
's,d,d,s,w':['曾外曾外孙媳妇'], 's,d,d,s,w':['曾外曾外孙媳妇'],
's,d,d,d':['曾外曾外孙女'], 's,d,d,d':['曾外曾外孙女'],
's,d,d,d,h':['曾外曾外孙女婿'], 's,d,d,d,h':['曾外曾外孙女婿'],
'd':['女儿','千金','小姐','掌上明珠','息女','闺女','囡女','乖囡','囡囡','囡嗯','囡儿','丫头','姑娘','妮子','女亲','长女','次女','幼女','女','阿女','女女'], 'd':['女儿','千金','小姐','掌上明珠','息女','闺女','囡囡','囡女','囡儿','乖囡','囡嗯','丫头','姑娘','妮子','女亲','长女','次女','幼女','女','阿女','女女'],
'd,h':['女婿','姑爷','姑爷儿','女婿子','女婿儿','儿婿','子婿','息婿','小婿','郎婿','郎婿子','息婿儿','囝婿','囡婿','东床','半子'], 'd,h':['女婿','姑爷','姑爷儿','女婿子','女婿儿','儿婿','子婿','息婿','小婿','郎婿','郎婿子','息婿儿','囝婿','囡婿','东床','半子'],
'd,h,f':['亲家公'], 'd,h,f':['亲家公'],
'd,h,f,f&o':['姻伯'], 'd,h,f,f&o':['姻伯'],

View File

@ -12,12 +12,12 @@ for(var key in _branch){
for(var k in _prefix[tag]){ for(var k in _prefix[tag]){
var prefixList = _prefix[tag][k]; var prefixList = _prefix[tag][k];
var newKey = key.replace(tag,k); var newKey = key.replace(tag,k);
var isFilter = ['h,h','w,w','w,h','h,w'].some(pair=>(newKey.indexOf(pair)>-1)); var isFilter = ['h,h','w,w','w,h','h,w'].some(pair=>(newKey.includes(pair)));
var newList = []; var newList = [];
if(!isFilter){ if(!isFilter){
prefixList.forEach(function(prefix){ prefixList.forEach(function(prefix){
nameList.forEach(function(name){ nameList.forEach(function(name){
if(name.indexOf('?')>-1){ if(name.includes('?')){
newList.push(name.replace('?',prefix)); newList.push(name.replace('?',prefix));
}else{ }else{
newList.push(prefix+name); newList.push(prefix+name);
@ -39,12 +39,7 @@ var branch = {
'w':['妻','内','岳','岳家','丈人'], 'w':['妻','内','岳','岳家','丈人'],
'h':['夫','外','公','婆家','婆婆'], 'h':['夫','外','公','婆家','婆婆'],
}; };
var allName = {}; var nameSet = new Set(Object.values(_map).flat());
for(var key in _map){
_map[key].forEach(function(name){
allName[name]=true;
});
}
for(var key in _map){ for(var key in _map){
if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){ if(key.match(/^[fm]/)||key.match(/^[olx][bs]$|^[olx][bs],[^mf]/)){
for(var k in branch){ for(var k in branch){
@ -57,7 +52,7 @@ for(var key in _map){
prefixList.forEach(function(prefix){ prefixList.forEach(function(prefix){
nameList.forEach(function(name){ nameList.forEach(function(name){
var newName = prefix+name; var newName = prefix+name;
if(!allName[newName]){ // 配偶组合的称呼不得已原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公) if(!nameSet.has(newName)){ // 配偶组合的称呼不得已原有称呼冲突(如:妻舅!=妻子的舅舅;外舅公!=老公的舅公)
_map[newKey].push(newName); _map[newKey].push(newName);
} }
}); });

View File

@ -14,7 +14,7 @@ var zh2number = function(text){
if(map[text]){ if(map[text]){
num = map[text]; num = map[text];
}else{ }else{
if(text.indexOf('十')>-1){ if(text.includes('十')){
var numAttr = text.split('十'); var numAttr = text.split('十');
if(!numAttr[0]){ if(!numAttr[0]){
num = 10; num = 10;
@ -23,7 +23,7 @@ var zh2number = function(text){
} }
num += textAttr.indexOf(numAttr[1]); num += textAttr.indexOf(numAttr[1]);
}else{ }else{
num += textAttr.indexOf(text)>-1?textAttr.indexOf(text):0; num += textAttr.includes(text)?textAttr.indexOf(text):0;
} }
} }
return num; return num;
@ -121,7 +121,7 @@ export function unique(arr){
var sameList = arr.filter(item=>item==item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,'')); var sameList = arr.filter(item=>item==item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''));
return arr.filter(item=>{ return arr.filter(item=>{
var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,''); var temp = item.replace(/[ol](?=s|b)/,'x').replace(/&[ol]/,'');
return sameList.indexOf(item)>-1||item!=temp&&sameList.indexOf(temp)==-1; return sameList.includes(item)||item!=temp&&!sameList.includes(temp);
}).filter((item,idx,arr) => arr.indexOf(item) === idx); }).filter((item,idx,arr) => arr.indexOf(item) === idx);
}; };
@ -212,20 +212,20 @@ export function getSelectors(str){
var num = zh2number(match[0]); var num = zh2number(match[0]);
for(var i in _data){ for(var i in _data){
var r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num); var r_i = i.replace(/(,[hw])$/,'&'+num+'$1').replace(/([^hw]+)$/,'$1&'+num);
if(_data[i].indexOf(x_name)>-1){ if(_data[i].includes(x_name)){
x_items.push(r_i); x_items.push(r_i);
}else if(_data[i].indexOf(r_name)>-1){ }else if(_data[i].includes(r_name)){
if(!i.match(/^[mf,]+$/)&&!r_name.match(/^[从世]/)){ // 直系祖辈不参与排序 if(!i.match(/^[mf,]+$/)&&!r_name.match(/^[从世]/)){ // 直系祖辈不参与排序
r_items.push(r_i); r_items.push(r_i);
} }
} }
if(_data[i].indexOf(name)>-1){ if(_data[i].includes(name)){
items.push(r_i); items.push(r_i);
} }
} }
}else{ }else{
for(var i in _data){ for(var i in _data){
if(_data[i].indexOf(name)>-1){ if(_data[i].includes(name)){
items.push(i); items.push(i);
} }
} }
@ -354,7 +354,7 @@ export function selector2id(selector,sex){
if(!selector.match(/^,/)){ if(!selector.match(/^,/)){
selector = ','+selector; selector = ','+selector;
} }
if(sex>-1&&selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){ if(sex>-1&&!selector.includes(',1')&&!selector.includes(',0')){
selector = ','+sex+selector; selector = ','+sex+selector;
} }
if(selector.match(/,[mwd0](&[ol\d]+)?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除 if(selector.match(/,[mwd0](&[ol\d]+)?,w|,[hfs1](&[ol\d]+)?,h/)){ //同志关系去除
@ -369,7 +369,7 @@ export function selector2id(selector,sex){
var item = _filter[i]; var item = _filter[i];
// console.log('[filter]',item['exp'],selector); // console.log('[filter]',item['exp'],selector);
selector = selector.replace(item['exp'],item['str']); selector = selector.replace(item['exp'],item['str']);
if(selector.indexOf('#')>-1){ if(selector.includes('#')){
selector.split('#').forEach(getId); selector.split('#').forEach(getId);
return false; return false;
} }
@ -475,7 +475,7 @@ export function getItemsById(id){
var gen = getGen(id); var gen = getGen(id);
if(gen<3&&!id.match(/[hw],/)){ if(gen<3&&!id.match(/[hw],/)){
_data[id].forEach(function(name){ _data[id].forEach(function(name){
if(!item&&name.indexOf('几')>-1){ if(!item&&name.includes('几')){
item = name.replace('几',zh); item = name.replace('几',zh);
} }
}); });
@ -545,10 +545,10 @@ export function getPairsByIds(id1,id2){
var list2_r = list2.map(function(selector){ var list2_r = list2.map(function(selector){
return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2'); return selector.replace(/&[ol\d]+/,'').replace(/([ol])([bs])/,'x$2');
}); });
if(list1.indexOf(id1)>-1&&list2.indexOf(id2)>-1||list1.indexOf(id2)>-1&&list2.indexOf(id1)>-1){ if(list1.includes(id1)&&list2.includes(id2)||list1.includes(id2)&&list2.includes(id1)){
result.push(_pair[key][0]); result.push(_pair[key][0]);
} }
if(list1_r.indexOf(id1_r)>-1&&list2_r.indexOf(id2_r)>-1||list1_r.indexOf(id2_r)>-1&&list2_r.indexOf(id1_r)>-1){ if(list1_r.includes(id1_r)&&list2_r.includes(id2_r)||list1_r.includes(id2_r)&&list2_r.includes(id1_r)){
result_r.push(_pair[key][0]); result_r.push(_pair[key][0]);
} }
} }

View File

@ -13,7 +13,6 @@ export default {
'w,m#d,h':['母婿'], 'w,m#d,h':['母婿'],
'h,f#s,w':['翁媳'], 'h,f#s,w':['翁媳'],
'h,m#s,w':['婆媳'], 'h,m#s,w':['婆媳'],
'f,f#s,[s|d]':['公孙'],
'[f|m],[f|m]#[s|d],[s|d]':['祖孙'], '[f|m],[f|m]#[s|d],[s|d]':['祖孙'],
'f,[xb|xb,w]#xb,[s|d]':['叔侄'], 'f,[xb|xb,w]#xb,[s|d]':['叔侄'],
'f,[xs|xs,h]#xb,[s|d]':['姑侄'], 'f,[xs|xs,h]#xb,[s|d]':['姑侄'],