如何将字符串与js中列表中的每个字符串进行比较?

时间:2014-12-11 11:32:34

标签: javascript string node.js jasmine

问题是,

Given a word and a list of possible anagrams, selects the correct sublist.

Given "listen" and a list of candidates like "enlists" "google"
"inlets" "banana"` the program should return a list containing
"inlets".

给出的测试用例类型为:

var anagram = require('./anagram');

describe('Anagram', function() {

  xit("detects simple anagram",function() {
    var subject = anagram("ant");
    var matches = subject.matches(['tan', 'stand', 'at']);

    expect(matches).toEqual(['tan']);
  });
});

这是我一直在想的,

  1. 接受给定的单词,拆分每个字符并按字母顺序排序
  2. 接受列表,将其拆分为单词,取出每个单词并拆分每个字符并按字母顺序排序
  3. 将1的结果与2进行比较,如果字符串匹配,则返回其原始形式。
  4. 但问题是,我不知道如何开始,请帮助。

2 个答案:

答案 0 :(得分:0)

是的,你的想法是正确的,这是你如何实现它:

var anagrams = function( input, wordlist ){
    // sort the input word
    var sortedinput = input.split('').sort().join(''); 
    // filter the array by checking if...
    return wordlist.filter( function( word ){
        // ...the word after sorting matches the sorted input
        return word.split('').sort().join('') == sortedinput; 
    });
}

anagrams( 'listen', ["enlists", "google", "inlets", "banana"] );
// ["inlets"]

http://jsfiddle.net/2kkvw4u5/

答案 1 :(得分:0)

将当前单词拆分为char数组后:

  1. 遍历单词列表;

  2. 检查数组的长度是否与比较的字char数组相等;

  3. 对比较的单词char数组和当前单词char数组进行排序,并检查每个元素是否等于该数组中的所有索引。