Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用字母表位置替换字母_Javascript_Arrays_String - Fatal编程技术网

Javascript 用字母表位置替换字母

Javascript 用字母表位置替换字母,javascript,arrays,string,Javascript,Arrays,String,在我开始时,这看起来相当简单,但由于某些原因,每次我尝试在codewars上运行结果时,都会得到一个空数组。我希望你能帮我找出问题所在 功能字母位置(文本){ text.split(“”).join(“”); var chari=“”; var-arr=[]; var alphabet=“abcdefghijklmnopqrstuvxyz”。拆分(“”); 对于(变量i=0;i-1){ arr.push(字母表indexOf(chari)); } } 返回arr; } 日志(alphabetP

在我开始时,这看起来相当简单,但由于某些原因,每次我尝试在codewars上运行结果时,都会得到一个空数组。我希望你能帮我找出问题所在

功能字母位置(文本){
text.split(“”).join(“”);
var chari=“”;
var-arr=[];
var alphabet=“abcdefghijklmnopqrstuvxyz”。拆分(“”);
对于(变量i=0;i-1){
arr.push(字母表indexOf(chari));
}
}
返回arr;
}
日志(alphabetPosition(“Hello World”)您需要该属性

而不是
text.len

功能字母位置(文本){
瓦尔·查里,
arr=[],
alphabet=“abcdefghijklmnopqrstuvxyz”,
我
对于(变量i=0;i首先:删除空格
第二:将每个字符与其字母等级进行映射
第三:用字符串测试新年快乐

var alphabet=“abcdefghijklmnopqrstuvwxyz”。拆分(“”);
var alphabetPosition=text=>
text.split(“”).map(x=>alphabet.indexOf(x)+1);

控制台日志(字母位置(“新年快乐”)
len
更改为
length

(var i = 0; i < text.len; i++)
// change to
(var i = 0; i < text.length; i++)
(变量i=0;i
通过使用acii代码,您可以使它变得更加简单。因为
a
=ascii码97、
b
=98等,还有一个javascript函数
String.charCodeAt(n)
,它返回特定函数的ascii码。您只需更改大写字母的偏移量(如果您想支持它们)

功能字母位置(文本){
var头寸=[];
对于(变量i=0;i如果(charCode>=97&&charCode=65&&charCode您也可以使用
.charCodeAt
功能:

功能字母位置(文本){
start=“a”。charCodeAt(0);
end=“z”。charCodeAt(0);
res=[];
对于(变量i=0;i=start&&index使用此代码,请尝试使用此代码:

功能字母位置(文本){
var结果=”;
对于(变量i=0;i64&&code<91)结果+=(代码-64)+”;
}
返回result.slice(0,result.length-1);
}

log(alphabetPosition(“日落时间设置为12点”);
您可以这样做

var alpha=[].reduce.call(“abcdefghijklmnopqrstuvxyz012456789.,!”,(p,c,i)=>(p[c]=i,p),{}),
str=“2017年快乐,无论怎样……”,
coded=[].map.call(str,c=>alpha[c.toLowerCase());

console.log(coded);
此示例将基于基于0的数组返回,并使用带筛选器的lambda表达式。我回收通过拆分传递给方法的文本创建的原始字节数组

功能字母位置(文本){
var bytes=text.split(“”);
var alphabet=“abcdefghijklmnopqrstuvxyz”。拆分(“”);
for(变量i=0,len=text.length;i{if(n>-1)返回n;}).join(“”);
}

console.log(alphabetPosition(“Hello World”);
这里有一个短得多的版本,它也有同样的功能:

function alphabetPosition(text){
  return text.split('').map(function(character){ return character.charCodeAt(0) - 'a'.charCodeAt(0) + 1; })
}

console.log(alphabetPosition("Hello World"));

这是我对代码战的解决方案。非常有效;)

让alphabetPosition=(文本)=>{
让str=Array.from(text.toLowerCase().replace(/[^a-z]/g',);
设arr=[];
for(设i=0;i
首先,我们使用
text.toLowerCase()
将文本转换为小写,去掉大写字母,然后执行
。replace(/[^a-z]/g,”)
将所有非a-z字符替换为零

下一步是使用
[…words]
将字符串展开到一个数组中,然后将其映射为每个a-z字符的ascii字符代码

由于a=97和b=98等,我们将减去96,得到a=1和b=2等(字母表中字母的位置)

我的答案

功能字母位置(文本){
if(text.match(/[a-z]/gi)){//如果文本不是emtpty
让justAlphabet=text.match(/[a-z]/gi).join(“”).toLowerCase();//首先提取字母以外的字符
让字母表=“abcdefghijklmnopqrstuvxyz”;
设a=[];//创建一个空数组
for(设i=0;i
这一个应该可以工作

const lineNumberHandler = (arr) => {
    const alphabet = 'abcdefghijklmnopqrstuwxyz';
    return arr.map((el) => `${alphabet.indexOf(el) + 1}:${el}`);
}

text.len
这不应该是
text.length
吗?谢谢大家,我很感激所有的答案。len的问题导致了数组问题。也许我想到的是Python。@MlowBunjay-应该经常检查浏览器的控制台是否有错误消息。注意:在mappi之前,您可能需要将文本字符串小写indexOf从0开始,通常字母表中的字母位置从1开始。除此之外,很好code@VladimirM:是的,这只是一个简单的回答,但你是对的。你还可以测试字符串中的字符是否是非字母的,短正则表达式是否更新为1
let alphabetPosition = (text) => {
  let str = Array.from(text.toLowerCase().replace(/[^a-z]/g,''));
  let arr = [];
  for (let i = 0; i < str.length; i++) {
     arr.push(str[i].charCodeAt() - 96);
  }
    return arr.join(' ');
}
function alphabetPosition(text) {
  const words = text.toLowerCase().replace(/[^a-z]/g,"");
  return [...words].map(v=> v.charCodeAt() - 96);
}
const lineNumberHandler = (arr) => {
    const alphabet = 'abcdefghijklmnopqrstuwxyz';
    return arr.map((el) => `${alphabet.indexOf(el) + 1}:${el}`);
}