【问题标题】:Searching through an array of strings to find one of the words matching搜索字符串数组以找到匹配的单词之一
【发布时间】:2022-01-23 04:31:19
【问题描述】:

我试图让我的用户输入一个搜索词,然后返回数组中与他们输入的所有名称匹配的字符串。因此,如果他们在这里输入 clinton,它会找到所有的 clintons,但如果他们搜索 hillary clinton,省略 rodham 中间名,它会返回 hillary,但不会返回 bill 或 chelsea。

const array = ['hillary rodham clinton', 'bill clinton', 'chealsea clinton', 'louise penny', 'amanda litman']

const searchTerm1 = 'hillary clinton' // should return hillary rodham clinton
const searchTerm2 = 'clinton' // should return hillary rodham clinton, bill clinton, chelsea clinton
const searchTerm3 = 'hillary' // should return hillary rodham clinton

【问题讨论】:

    标签: javascript arrays search


    【解决方案1】:

    假设您的搜索词总是由一个空格分隔,您可以执行以下操作:

    const array = ['hillary rodham clinton', 'bill clinton', 'chealsea clinton', 'louise penny', 'amanda litman']
    
    const searchTerm1 = 'hillary clinton' // should return hillary rodham clinton
    const searchTerm2 = 'clinton' // should return hillary rodham clinton, bill clinton, chelsea clinton
    const searchTerm3 = 'hillary' // should return hillary rodham clinton
    
    let find = (term) => array.filter(item => term.split(' ').every(r => item.split(' ').includes(r)))
    
    console.log(find(searchTerm1))
    console.log(find(searchTerm2))
    console.log(find(searchTerm3))

    【讨论】:

      【解决方案2】:

      您可以使用此功能进行搜索。

      function search(searchTerm, array) {
              const words = searchTerm.split(" ");
              let tmpArray = array;
              for (let i = 0; i < words.length; i++) {
                  tmpArray = tmpArray.filter(obj => obj.indexOf(words[i]) >= 0);
              }
                  
              return tmpArray;
      }
      
      const newArray1 = search(searchTerm1, array);
      const newArray2 = search(searchTerm2, array);
      const newArray3 = search(searchTerm3, array);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-03
        • 1970-01-01
        • 2015-07-25
        • 2019-02-12
        • 1970-01-01
        • 1970-01-01
        • 2018-04-09
        相关资源
        最近更新 更多