在Javascript中从数组中搜索和检索匹配数据

在Javascript中从数组中搜索和检索匹配数据,javascript,arrays,data-structures,logic,Javascript,Arrays,Data Structures,Logic,我有一个数组,其中包含一些数据,如下所示: 我试图实现这一点,以便根据传递的值显示相应的结果。例如,如果我通过了“test-1”,它应该返回test、test*和test-1。它不应返回测试2或测试3 条件: 如果精确的输入值与数组中的某个值匹配,则应将其添加到结果中 如果输入的值有连字符,则应检索不包含连字符且包含连字符前文本的任何其他值 我曾想过使用regex,但不确定这是否是最好的解决方案。我的逻辑到目前为止,感觉它将结束混乱,所以我想知道一个优雅的方式来实现这一点,请 这就是我所拥有

我有一个数组,其中包含一些数据,如下所示:

我试图实现这一点,以便根据传递的值显示相应的结果。例如,如果我通过了“test-1”,它应该返回testtest*和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(结果)
}

测试人员(“测试”)您尚未明确匹配的条件。我已添加了条件