Javascript 如何将结果字符串添加到数组中并消除重复项?

Javascript 如何将结果字符串添加到数组中并消除重复项?,javascript,Javascript,我对Javascript还不太熟悉,我需要一些帮助来解决804问题。独特的莫尔斯电码字-Leetcode问题 我计算了如何通过使用单词中每个字母的索引来搜索并返回摩尔斯电码,并使用它将摩尔斯电码数组中特定索引处的代码连接起来。问题是我无法将结果存储到集合数组中,排除重复项并返回集合数组的长度 var字母=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”

我对Javascript还不太熟悉,我需要一些帮助来解决804问题。独特的莫尔斯电码字-Leetcode问题

我计算了如何通过使用单词中每个字母的索引来搜索并返回摩尔斯电码,并使用它将摩尔斯电码数组中特定索引处的代码连接起来。问题是我无法将结果存储到集合数组中,排除重复项并返回集合数组的长度

var字母=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”];
var morseCode=[“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”;
var words=[“琴酒”、“禅宗”、“吉格”、“味精”]
var uniqueMorseRepresentations=函数(字){
对于(i=0;i唯一货币(文字)在函数内部,创建一个集合:

 const resultSet = new Set();
然后,当建立每个
结果时(当您记录它时),将生成的摩尔斯电码添加到该集合中:

resultSet.add(result);

然后您可以最终
返回该集合,或其
.size

我认为这应该可以解决您的问题。获取一个obj,并将结果存储在其中,检查结果是否重复,然后不要将该结果推送到该数组中。这个操作的时间复杂度是O(1),所以如果你想扩展你的算法,你不必担心它

var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
var morseCode = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."];
var words = ["gin", "zen", "gig", "msg","gig"]
var array  = [];
var uniqueMorseRepresentations = function(words) {
  let obj = {};
  for (i = 0; i < words.length; i++) {
    let word = words[i];
    var result = "";
    for (j = 0; j < word.length; j++) {
      let letter = word.charAt(j);
      let index = letters.indexOf(letter);
      result += morseCode[index];
    };
    if(!obj[result]){
        obj[result] = result;
        array.push(result);
    }
    console.log(result);
  };
    console.log(array)
};
uniqueMorseRepresentations(words);
var字母=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”];
var morseCode=[“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”;
var words=[“琴酒”、“禅宗”、“吉格”、“味精”、“吉格”]
var数组=[];
var uniqueMorseRepresentations=函数(字){
设obj={};
对于(i=0;i
为什么不能将结果存储到
集合中
?尝试这样做的代码在哪里?您可以创建一个包含每个字符串的对象,从results={}开始,然后用results[“your string”]=true填充;这将只允许您为每个字符串创建一个条目,然后在最后您可以使用for(let str:results){}遍历对象,这可能是Yes的重复,这很有效!感谢您的解释和花时间实际完成代码。谢谢你请投票给我的答案,我有31个声誉,至少需要50个。我已经试过了,但它说我的声誉不足15个,所以我的投票不会改变公开显示的帖子分数:(很好,阿德里安,但无论什么时候你的声誉超过15个,请随时投票:P当然,我只是回来回顾这个答案,因为我需要它。祝你好运,好先生:)