首页 > 解决方案 > “枚举”具有自定义数字序列的字符串?

问题描述

我正在编写一个函数,该函数letters(text)接受一个字符数奇数的字符串,并制作一个字典,根据它们在字符串中的位置为每个字母赋予一个数值。这个函数不是用它们的索引枚举字母,而是给它们从 -(lengthOfString/2) 到 (lengthOfString/2) 的值,这样中间的字符总是为零。

>>>letters("stack")
{"S": -2, "T": -1, "A": 0, "C": 1, "K": 2}

我对 JavaScript 还很陌生,即使我的代码很难完成它的工作,我认为这不是正确的方法。另外我需要检查文本是否只包含字母,字母数量不均匀并且不包含两次相同的字母。我找不到抛出断言错误的方法以及如何制定最后一个条件。

function letters(text){

    text= text.toUpperCase();
    if(text.length % 2 !== 1 && /^[a-zA-Z]+$/.test(text)){

    }
    const len = text.length;
    const limit = parseInt(len/2);
    var list = text.split("");
    var dict = {};

    for (let j = -limit; j<=limit; j++){
        list.push(j)
    }
    for (var range = 0; range < list.length/2;range++ ) {
        dict[list[range]] = [];
        dict[list[range]].push(list[range + list.length / 2]);
    }
  
    return dict
}
console.log(letters("stack"))

标签: javascript

解决方案


您可以简单地:

const letters = (txt) => {
  if(txt.length%2==0){throw "even length exeption";return}
  let out = {}
  for (var x = 0; x < txt.length; x++)
  {
    out[txt.charAt(x)] = x - (txt.length-1)/2
    
  }
  return out
}

console.log(letters('stack'))
console.log(letters('stackk'))


推荐阅读