在Javascript中从数组中搜索和检索匹配数据
我有一个数组,其中包含一些数据,如下所示: 我试图实现这一点,以便根据传递的值显示相应的结果。例如,如果我通过了“test-1”,它应该返回test、test*和test-1。它不应返回测试2或测试3 条件:在Javascript中从数组中搜索和检索匹配数据,javascript,arrays,data-structures,logic,Javascript,Arrays,Data Structures,Logic,我有一个数组,其中包含一些数据,如下所示: 我试图实现这一点,以便根据传递的值显示相应的结果。例如,如果我通过了“test-1”,它应该返回test、test*和test-1。它不应返回测试2或测试3 条件: 如果精确的输入值与数组中的某个值匹配,则应将其添加到结果中 如果输入的值有连字符,则应检索不包含连字符且包含连字符前文本的任何其他值 我曾想过使用regex,但不确定这是否是最好的解决方案。我的逻辑到目前为止,感觉它将结束混乱,所以我想知道一个优雅的方式来实现这一点,请 这就是我所拥有
- 如果精确的输入值与数组中的某个值匹配,则应将其添加到结果中
- 如果输入的值有连字符,则应检索不包含连字符且包含连字符前文本的任何其他值
const arrayList = ["test", "hello", "blessed", "blessed-9","test*", "test-1", "blessed*", "test-2", "hello*", "test-3" ];
let result = [];
function tester(inputVal){
arrayList.filter(arrayVal => {
if(arrayVal === inputVal){
result.push(arrayVal);
} else if(arrayVal.indexof('*') !== -1){
//check if the first part matches
}
})
console.log(result,"====")
}
tester("test");
在指定的条件下,您可以在
arrayList
上使用单个.filter()
调用
测试这些值是否匹配
如果不是,则测试连字符前的字符串值是否与元素的开头匹配,并且元素中没有连字符
在代码段中,通过调用string.split('-')
并从返回的数组中获取第一个结果来检索连字符之前的字符串值
const arrayList=[“test”、“hello”、“foweld”、“foweld-9”、“test*”、“test-1”、“foweld*”、“test-2”、“hello*”、“test-3”];
函数过滤器阵列(字符串){
让root=string.split('-')[0];
返回arrayList.filter(元素=>
元素===字符串| |
element.startsWith(root)和&!element.includes('-');
}
常量结果=过滤器阵列(“测试-1”);
控制台日志(结果)代码>
const arrayList=[“test”、“hello”、“foweld”、“foweld-9”、“test*”、“test-1”、“foweld*”、“test-2”、“hello*”、“test-3”];
让结果=[];
功能测试仪(inputVal){
结果=[]
arrayList.forEach(arrayVal=>{
如果(arrayVal.search(inputVal)!=-1){
结果:推送(arrayVal);
}
})
console.log(结果)
}
测试人员(“测试”)代码>您尚未明确匹配的条件。我已添加了条件