检查单词是否是纯javascript的等值线

检查单词是否是纯javascript的等值线,javascript,arrays,string,Javascript,Arrays,String,如何使用函数检查给定单词是否是纯javascript的等值线图。函数必须返回true或false 等值线是具有重复字符的单词 我知道这段代码有效,但我需要一个更好的解决方案 function isIsogram(word){ x = false; y = false; for(i = 0; i < word.length; i++){ wordl = word.substring(0,i) wordr = word.substring(i)

如何使用函数检查给定单词是否是纯javascript的等值线图。函数必须返回true或false

等值线是具有重复字符的单词

我知道这段代码有效,但我需要一个更好的解决方案

function isIsogram(word){
    x = false; y = false;
    for(i = 0; i < word.length; i++){
        wordl = word.substring(0,i)
        wordr = word.substring(i)
        x = wordl.includes(word.charAt(i))
        y = wordr.includes(word.charAt(i))
        //console.log(x,wordl,wordr)
    }
    return x&&y
}
isIsogram("thomas");//False
isIsogram("moses"); //True
函数isIsogram(word){
x=假;y=假;
for(i=0;i
当给定一个单词时,此函数如果将该单词一分为二, 分别是wordl和wordr。 两个拆分都会被选中,以在原始单词中包含一个字符。如果wordl和wordr都包含原始单词中的任何字符。那么这肯定是一个等值线

function isIsogram(word){
    x = false; y = false;
    for(i = 0; i < word.length; i++){
        wordl = word.substring(0,i)
        wordr = word.substring(i)
        x = wordl.includes(word.charAt(i))
        y = wordr.includes(word.charAt(i))
        //console.log(x,wordl,wordr)
    }
    return !x&&y
}
isIsogram("thomas");//True
isIsogram("moses"); //False
函数isIsogram(word){
x=假;y=假;
for(i=0;i
基于kishea的答案:

function isIsogram(sWord)
 {
  for (iCharIndex = 0; iCharIndex < sWord.length; iCharIndex++)
    if (sWord.substring(iCharIndex + 1).includes(sWord.charAt(iCharIndex)))
      return false;
  return true;
 }
函数isIsogram(剑)
{
for(iCharIndex=0;iCharIndex

如果在当前位置(
子字符串
)右侧找到当前位置(
字符
)的字符(
包括
),则返回
。否则循环将运行到末尾并返回
true

从字符串中删除重复的字母,然后检查两个长度。如果是相同的,那就是等值线

函数isIsogram(str){
返回str.split(“”).filter((item,pos,arr)=>arr.indexOf(item)==pos.length==str.length;
}
console.log(isIsogram('thomas'));

console.log(isIsogram('moses'))下面是一个使用
.split()
.every()
的简单方法:

let isIsogram=(str)=>str.split(“”)。every((c,i)=>str.indexOf(c)==i);
console.log(isIsogram(“thomas”);/*不要重复写信*/
控制台日志(isIsogram(“moses”);/*让我们重复2次*/
console.log(isIsogram(“hello”);/*我重复2次*/
console.log(isIsogram(“world”);/*不要重复写信*/
console.log(isIsogram(“abc”);/*空格字符重复2次*/
关于:

> function isIsogram(word) {
... var a = word.split('')
... var b = Array.from(new Set(a))
... return a.length === b.length;
... }
undefined
> isIsogram("mesos")
false
> isIsogram("thomas")
true
或者更好(只检查每个字符一次):

>函数isIsogram2(word){
…对于(变量i=0,len=word.length-1;i isIsogram2(“mesos”)
假的
>伊西索格拉姆(“托马斯”)
真的
var str=prompt('输入字符串');
var strlen=str.length;
对于(i=0;i
const isIsogram=(字符串)=>{
const lowerCased=string.toLowerCase()
const result=小写.split(“”).every((v,i)=>小写.indexOf(v)==i)
返回结果
}
log(isIsogram('ambidextrily'))//true
log(isIsogram('patteRN')//false
一种方法

function isIsogram(str){
  return !str.match(/([a-z]).*\1/i);
}

首先,这些结果不是倒退的吗?其次,这个答案将通过对代码工作原理的简短解释而得到改进。我测试了结果,这就是我得到的。只是需要更好的解决方案如果你在寻找更好的解决方案,那么你的尝试应该是问题的一部分,而不是答案。@kishea
等值线图是一个没有重复ch的单词。@kishea
字符。
但是单词moses有两个s-E,但它被认为是一个等值线。如果你不介意使用es6,你可以这样做:
isIsogram=x=>x.length==new Set(x.split(“”))当这个代码可能提供正确答案时,对它为什么工作的简要解释对于教OP和社区中的其他人有很长的路要走。请考虑对这个代码SNIPPETHOW添加一个解释,这可以被改进来忽略字母情况吗?请解释(c,i)变量。我是一个初学者JS编码和文档有点难以理解understand@SamuelBrutonc=字符,i=索引。函数将字符串拆分,然后检查每个字符及其索引,然后将字符索引与字符串索引进行匹配。
function isIsogram(word){
   return !/(.).*\1|\d/i.test(word)
}
var str=prompt('Enter a string');
    var strlen=str.length;

    for(i=0;i<strlen;i++){
       var stc=str.charAt(i);
       var flag=0;
       for(j=0;j<strlen;j++){
        var stk=str.charAt(j);
          if(stc==stk){
            flag=flag+1;
          }
       }

       if(flag!=1){
        break;
       }

    }

    if(flag!=1){
        alert('It is not an isogram');
    }
    else{
        alert('It is an isogram');
    }
const isIsogram = (word) => {
    return new Set(word.toLowerCase()).size === word.length
}

console.log(isIsogram('Thor'));//true
console.log(isIsogram('Loki'));//true
console.log(isIsogram('America'));//false
function isIsogram(str){
  return !str.match(/([a-z]).*\1/i);
}