创建一个简单的翻译器时遇到了挑战,我陷入了困境。我有一个 dictionary.js ,其中的en / fr中有成对的单词,如下所示:
const dictionary = [{en:'dog', fr:'chien'}, {en:'cat', fr:'chat'}];
我需要一个将接受用户输入的函数,检查此词是否在字典中,如果是,则返回相反的值。例如:
wordTranslator = (word) => {};
wordTranslator('dog'); // expected output 'chien'
我从遍历数组开始:
for(word.value in dictionary)
我假设该函数在字典中的某个索引处找到“ dog”,如何使其返回同级?
谢谢您的帮助,我还在学习;)
答案 0 :(得分:2)
类似以下内容。注意,我还添加了说出所需输出类型的功能。您也可以传递from
。
const wordTranslator = (word, to) => {
const from = to === 'en' ? 'fr' : 'en';
const item = dictionary.find(item => item[from] === word);
return item ? item[to] : '';
};
答案 1 :(得分:1)
您可以使用find()
搜索第一场比赛。
如果找不到该单词,它将返回一个空字符串。
const dictionary = [
{en: 'dog',fr: 'chien'},
{en: 'cat',fr: 'chat'}
];
wordTranslator = (word) => (dictionary.find(o => o.en === word) || {fr: ""}).fr;
console.log(wordTranslator('dog'));
答案 2 :(得分:0)
const dictionary = [{en:'dog', fr:'chien'}, {en:'cat', fr:'chat'}];
wordTranslator = (word) => dictionary.find(item => item.en === word).fr;
console.log(wordTranslator('dog'))
答案 3 :(得分:0)
答案 4 :(得分:0)
const input = [{en:'dog', fr:'chien'}, {en:'cat', fr:'chat'}]
const findItem = (word) => (
input.find(item => (item.fr === word || item.en === word))
)
const findTranslation = (word) => {
const item = findItem(word);
return item.fr === word ? item.en : item.fr
}
// Use only findTranslation:
console.log(findTranslation('dog')) // 'chien'
console.log(findTranslation('chat')) // 'cat'
答案 5 :(得分:0)
如果您不愿意添加其他参数以传递给函数...
……我可能会做类似下面的事情。
查看我的摘要中的评论:
const dictionary = [
{en: 'dog', fr: 'chien'},
{en: 'cat', fr: 'chat'}
];
wordTranslator = (word) => {
var result = dictionary.find(elm => elm.en === word);
if (result) return result.fr;
result = dictionary.find(elm => elm.fr === word);
if (result) return result.en;
return '--- Not found ---'; // Customizable
};
// EN -> FR
console.log(wordTranslator('dog'));
console.log(wordTranslator('cat'));
console.log(wordTranslator('bird'));
// FR -> EN
console.log(wordTranslator('chien'));
console.log(wordTranslator('chat'));
console.log(wordTranslator('oiseau'));
希望有帮助。
答案 6 :(得分:0)
最好一次创建一个字典类型的结构,循环遍历数组并将其用于所有搜索。
var cloneDictionary = {};
dictionary.forEach(ele => {
cloneDictionary[ele['en']] = ele.fr
})
wordTranslator = ((word) => cloneDictionary[word]);