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
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+10 -26
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':['姻伯'],
+4 -9
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);
} }
}); });
+12 -12
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]);
} }
} }
-1
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]':['姑侄'],