我有几个字符串数组,并给了一个特定的输入键字符串,我试图返回相应的键。
例如,如果输入值为“ a1”,则应返回“ aa”,因为“ a1”是键“ aa”的数组值的一部分。
inputKey = 'a1';
dict = {
'aa': ['a1', 'a2'],
'bb' : ['b1', 'b4', 'b6']
...
};
/
// _.contains())
我当时正在考虑遍历字典中的每个元素,如果数组中存在该值,则返回键。
这是执行此操作的最佳方法吗? (为值数组找到相应的键)换句话说(将某些特定值映射到另一个值)。
答案 0 :(得分:1)
使用.find()
和.includes()
应该足够简单:
let inputVal = 'a1';
let inputVal2 = 'b1';
let inputVal3 = 'c1';
let dict = {
'aa': ['a1', 'a2'],
'bb' : ['b1', 'b4', 'b6']
};
let foundKey = Object.keys(dict).find(key => dict[key].includes(inputVal));
let foundKey2 = Object.keys(dict).find(key => dict[key].includes(inputVal2));
let foundKey3 = Object.keys(dict).find(key => dict[key].includes(inputVal3));
console.log(foundKey);
console.log(foundKey2);
console.log(foundKey3);
答案 1 :(得分:1)
我知道您想要使用underscore
的方法。
这是使用函数find
和函数some
的替代方法。
let inputKey = 'a1',
dict = { 'aa': ['a1', 'a2'], 'bb': ['b1', 'b4', 'b6'] },
result = Object.keys(dict).find(k => dict[k].some(d => d === inputKey));
console.log(result);
使用功能包含
let inputKey = 'a1',
dict = { 'aa': ['a1', 'a2'], 'bb': ['b1', 'b4', 'b6'] },
result = Object.keys(dict).find(k => dict[k].includes(inputKey));
console.log(result);