匹配字谜并推送到阵列

时间:2016-08-08 08:44:26

标签: javascript arrays loops push anagram

我有一个给定的word,我希望与给定的单词列表mainList匹配,并确定给定列表中的哪些单词是给定单词的字谜,并将它们添加到另一个清单subList

我觉得我的方法很好,但它会返回意外的结果。

例如......

var word = 'master';
var mainList = ['stream', 'pidgeon', 'maters'];
var subList = [];

然后我接受这个词,分成一个字母数组,字母表,并加入一个字符串。有了这个字符串,我应该可以匹配任何可能的字谜(我将以同样的方式隐藏)。

var mainSorted = [];

  for (i = 0; i < word.length; i++) {
     mainSorted = word.split('').sort().join();
  }

这是出错的地方。我遍历mainList数组,尝试确定转换后的给定项是否与原始项匹配。如果是这样,我希望将push字词subList添加到 for (var i = 0; i < mainList.length; i++) { var subSorted = mainList[i].split('').sort().join; if (mainSorted === subSorted) { subList.push(mainList[i]) } } return subList; 数组。

['stream', 'maters']

...我希望看到subList的值是:TYPE IntA IS VARRAY(100) of NUMBER; list IntA := IntA();

然而,我返回了一个空数组。

我经历了这么多次,我看不出有什么问题,真的很感激一些帮助!

此外,我知道可能有更多雄辩的方法来做到这一点(我欢迎任何建议),但主要是我想知道这出错的地方。

提前致谢。

1 个答案:

答案 0 :(得分:2)

你在加入结束时忘记了()

var subSorted = mainList[i].split('').sort().join; 

应该是

var subSorted = mainList[i].split('').sort().join();

一个非问题是

for(i = 0; i&lt; word.length; i ++){      mainSorted = word.split('')。sort()。join();   }

不需要处于循环中

 mainSorted = word.split('').sort().join();

单独就足够了

作为奖励,这是一种更为干净的方式来做你正在做的事情

var word = 'master';
var mainList = ['stream', 'pidgeon', 'maters'];

var mainSorted = word.split('').sort().join();

return mainList.filter(function(sub) {
    return sub.split('').sort().join() == mainSorted;
});