【发布时间】:2021-12-06 17:27:48
【问题描述】:
我正在寻找一种在数组中搜索名称的方法,包括搜索输入(多个单词:名字、姓氏)可能被颠倒的情况。
数组看起来像这样,带有一系列名称。
const names = ['Alan Hope', 'Greg Day', 'Alan Peters']
搜索输入可能如下'peter Al'
实现这一点的代码是什么样的。这是我目前所拥有的,我知道这是完全错误的。
const studentNames = ['Alan Hope', 'Greg Day', 'Alan Peters']
function search () {
const bankingSheet = ss.getSheetByName('Banking')
const searchInput = 'Hope Al'
const searchWords = searchInput.split(/\s+/)
const filtered = studentNames.filter(function(name) {
searchWords.every(function(word) {
return name.toString().toLowerCase().indexOf(word) !== -1
})
})
Logger.log(filtered)
}
根据我收集的信息,我需要首先将搜索输入拆分为组成词。然后我需要过滤名称数组。对于数组中的每个名称,我需要检查是否所有搜索词都以某种方式出现在名称中。我认为这可能涉及every方法。
对于每个名字,如果返回值为真,那就是我需要返回的。
这种想法正确吗?
提前感谢您!这一刻真的很头疼!
【问题讨论】:
-
从给定数组中搜索“Hope Al”将要求提升到一个新的水平,请查看Levenshtein distance;
-
@Teemu 读后听起来真的很复杂。这个问题对于像我这样的业余爱好者来说是不是太大了?
-
我无法回答这个问题,你必须自己定义你的技能。您可以即时创建正则表达式,并检查关键字是否部分匹配数据。但是,这很容易出错,而且很容易得到误报。我建议使用唯一的 id 或类似的东西。
标签: javascript arrays google-apps-script