JavaScript 字谜比较

标签 javascript

我正在尝试比较两个字符串以查看它们是否是变位词。

我的问题是我只比较每个字符串中的第一个字母。例如,“Mary”和“Army”将返回 true,但不幸的是,“Mary”和 Arms 也会返回 true。

如何在返回 true/false 之前比较两个字符串的每个字母?

这是一个 jsbin 演示(单击“控制台”选项卡查看结果):

http://jsbin.com/hasofodi/1/edit

function compare (a, b) {
  y = a.split("").sort();
  z = b.split("").sort();
  for (i=0; i<y.length; i++) {
    if(y.length===z.length) {
      if (y[i]===z[i]){
        console.log(a + " and " + b + " are anagrams!");
        break;
      }
      else {
        console.log(a + " and " + b + " are not anagrams.");
        break;
      }
    }
    else {
      console.log(a + " has a different amount of letters than " + b);
    }
    break;
  }
}

compare("mary", "arms");

最佳答案

排序后,您可以数组再次加入字符串,而不是逐个字母地比较,让浏览器进行比较:

function compare (a, b) {
    var y = a.split("").sort().join(""),
        z = b.split("").sort().join("");
    console.log(z === y
        ? a + " and " + b + " are anagrams!"
        : a + " and " + b + " are not anagrams."
    );
}

关于JavaScript 字谜比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785465/

相关文章:

javascript - 可以停止复制+粘贴到 html 文本框中吗?

javascript - 由于 header 导致 scrollto 偏移 javascript 的问题

javascript - Angular 2 - ngfor - 带空格的字段

javascript - 为什么 CSS :active on link doesn't make the current page link highlighted?

javascript - Ajax 请求命中或未命中 PHP SQL 提交

javascript - 如果在 Promise 链中的某个点抛出错误,它是否会自动沿着链向下传播?

Javascript:如何确保 "this"在对象内始终相同?

javascript - Chrome 扩展程序 : can't get value from storage with one click

Javascript 使用 async/await 传递/链接 Promise

javascript - 将 Canvas 图像保存到服务器 ASP.NET mvc