js数组关联:indexOf不是函数

时间:2016-06-08 19:25:20

标签: javascript arrays

我不知道我的代码有什么问题。请问你能帮帮我吗? 此函数将使用数组翻译单词。 完整的目标是:

  

代表一个小的双语词典作为Javascript对象   追随时尚{“merry”:“上帝”,“圣诞节”:“jul”,“和”:“och”,   “happy”:gott“,”new“:”nytt“,”year“:”ĺr“}并用它来翻译你的   圣诞贺卡从英语到瑞典语。

function translateText(){
var translate=[], i= 0,text, word, text2='';
    translate = {"merry":"god", "christmas":"jul", "and":"och", "happy":"gott", "new":"nytt", "year":"ĺr"};

    text = document.getElementById('text').value;
    word = text.split(" ");


  for (i;i<word.length; i++){

      if (translate.indexOf(word)!==-1) {

          text2 += translate[word] + " ";

      }else{
          text2 += word + " ";

      }
  }

      document.getElementById('boxEight').innerHTML = text2;
}

3 个答案:

答案 0 :(得分:1)

它不起作用,因为您使用对象而不是数组,尽管可以以类似于数组的方式使用对象。

要检查对象是否包含值,您可以使用hasOwnProperty

if (translate.hasOwnProperty(word)) {
  ...
}

in

if (word in translate) {
  ...
}

或者只是一个老式的老式访问,如果你只关心它有一个&#34; truthy&#34;值(不是0falsenullundefinedNaN或空字符串。

if (translate[word]) {
  ...
}

答案 1 :(得分:0)

我不确定,但我认为可能是您将翻译数组转换为具有以下行的对象:

translate = {"merry":"god", "christmas":"jul", "and":"och", "happy":"gott", "new":"nytt", "year":"ĺr"};

尝试将花括号{}更改为方括号[]

答案 2 :(得分:-1)

你翻译一个对象,而不是一个数组,所以首先:

translate = [{"merry":"god"}, {"christmas":"jul"}, {"and":"och"}, {"happy":"gott"}, {"new":"nytt"}, {"year":"ĺr"}];

接下来,indexof是一种获取字符串中单词或字符索引的方法 Reference