我正在尝试返回给定值的近似匹配的键。 这是我的字典数据
const dict = {
"key": "value",
"nova": "nov",
"euro": "eur"
}
使用下划线或原始js而不是循环遍历,是一种更简单的方法吗?基本上,如果输入字符串中有与“键”匹配的任何子字符串,则返回“值”。
示例
input: "nova_w2" output: "nov"
input: "nova_2323" output: "nov"
input: "novae" output: "nov"
input: "euro12" output: "eur"
答案 0 :(得分:2)
如果您必须检查整个词典,那么您真的不能不循环执行此操作。 但这很简单。循环浏览字典。如果单词包含键,则返回值。
const dict = {
"key": "value",
"nova": "nov",
"euro": "eur"
};
const lookup = word => {
const match = Object.entries( dict ).find(([ key, value ]) => word.includes( key ));
return match
? match[ 1 ]
: false;
};
console.log( lookup( 'nova_w2' ));
console.log( lookup( 'nova_2323' ));
console.log( lookup( 'novae' ));
console.log( lookup( 'euro12' ));
console.log( lookup( 'thisShouldNotBeFound' ));
答案 1 :(得分:0)
我们可以使用Object.keys()
在对象中搜索适当的键,然后使用find来找到匹配的键。
let key = Object.keys(dict).find(key => this.value.includes(key))
这是一个有效的示例:
const dict = {
"key": "value",
"nova": "nov",
"euro": "eur"
}
const input = document.querySelector('input')
input.addEventListener('input', function() {
let key = Object.keys(dict).find(key => this.value.includes(key))
console.log(dict[key])
})
<input type="text">