遍历objs数组,检查值是否存在,返回相反的值/ Javascript

时间:2018-07-04 11:55:58

标签: javascript

创建一个简单的翻译器时遇到了挑战,我陷入了困境。我有一个 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”,如何使其返回同级?

谢谢您的帮助,我还在学习;)

7 个答案:

答案 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)

使用.find()en中查找单词,如果找到,则返回fr单词,否则在fr中查找单词并返回{{1 }}

en

答案 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]);