updated id去重后取名称

This commit is contained in:
PASSER-BY
2022-12-07 21:48:53 +08:00
parent f61adeeb28
commit 470ee24c45
5 changed files with 26 additions and 18 deletions
+2 -2
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
+18 -2
View File
@@ -61,6 +61,15 @@ export function reverseId(id,sex){
return ['']; return [''];
}; };
// ID列表去重
export function filterId(arr){
var sameList = arr.filter(item=>item==item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,''));
return arr.filter(item=>{
var temp = item.replace(/[ol](?=[s|b])/g,'x').replace(/&[ol]/,'');
return sameList.includes(item)||item!=temp&&!sameList.includes(temp);
}).filter((item,idx,arr) => arr.indexOf(item) === idx);
};
// 通过ID获取世代数 // 通过ID获取世代数
export function getGenById(id){ export function getGenById(id){
var gMap = {'f':1,'m':1,'s':-1,'d':-1}; var gMap = {'f':1,'m':1,'s':-1,'d':-1};
@@ -81,19 +90,26 @@ export function getItemsById(id){
if(_data[key]){ if(_data[key]){
res.push(_data[key][0]); res.push(_data[key][0]);
}else{ }else{
var ids = [];
for(var i in _data){ for(var i in _data){
if(i.replace(/&[ol]/g,'')==key){ if(i.replace(/&[ol]/g,'')==key){
res.push(_data[i][0]); // res.push(_data[i][0]);
ids.push(i);
}else{ }else{
while (key.match(/[ol](b|s)/)){ while (key.match(/[ol](b|s)/)){
key = key.replace(/[ol](b|s)/,'x$1'); key = key.replace(/[ol](b|s)/,'x$1');
if(key==i){ if(key==i){
res.push(_data[i][0]); // res.push(_data[i][0]);
ids.push(i);
break; break;
} }
} }
} }
} }
res = filterId(ids).map(function(id){
return _data[id][0];
});
} }
return res; return res;
}; };
+2 -11
View File
@@ -6,7 +6,7 @@ import _replace from './rule/replace';
import _similar from './rule/similar'; import _similar from './rule/similar';
import {zh2number} from './unit'; import {zh2number} from './unit';
import {reverseId,getGenById} from './id'; import {reverseId,filterId,getGenById} from './id';
import {modeData as _data} from './mode'; import {modeData as _data} from './mode';
// 获得最简 // 获得最简
@@ -70,15 +70,6 @@ var getOptimal = function(options){
}; };
}; };
// 去重
var unique = function(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.includes(item)||item!=temp&&!sameList.includes(temp);
}).filter((item,idx,arr) => arr.indexOf(item) === idx);
};
// 中文获取选择器 // 中文获取选择器
export function getSelectors(str){ export function getSelectors(str){
str = str.replace(/之/g,'的').replace(/吾之?(.+)/,'$1').replace(/我的?(.+)/,'$1'); str = str.replace(/之/g,'的').replace(/吾之?(.+)/,'$1').replace(/我的?(.+)/,'$1');
@@ -307,5 +298,5 @@ export function selector2id(selector,sex){
var result = expandSelector(selector).map(function(selector){ var result = expandSelector(selector).map(function(selector){
return selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息 return selector.replace(/,[01]/,'').substr(1); //去前面逗号和性别信息
}); });
return unique(result); return filterId(result);
}; };
+1
View File
@@ -28,6 +28,7 @@ test('relationship.js show to be tested', function (t) {
t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']); t.deepEqual(relationship({text:'我',target:'爸爸'}),['儿子','女儿']);
t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']); t.deepEqual(relationship({text:'爱人',target:'娘家侄子'}),['姑丈']);
t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']); t.deepEqual(relationship({text:'岳母的配偶的孩子的爸爸'}),['岳父']);
t.deepEqual(relationship({text:'姐姐的老公的姐姐的老公'}),['姊妹姻姊妹壻']);
t.deepEqual(relationship({text:'舅妈',target:'外婆',type:'pair'}),['婆媳']); t.deepEqual(relationship({text:'舅妈',target:'外婆',type:'pair'}),['婆媳']);
t.deepEqual(relationship({text:'妈妈的二哥'}),['二舅']); t.deepEqual(relationship({text:'妈妈的二哥'}),['二舅']);
t.deepEqual(relationship({text:'爸爸的二哥'}),['二伯']); t.deepEqual(relationship({text:'爸爸的二哥'}),['二伯']);