如何修复我的代码,使其在我的函数中返回num(digit)?

时间:2019-02-05 21:37:18

标签: javascript

function getDigit(number, index){
    let str = number.toString();
    let num;
    if (index === 0){
      index = str.length-1;
      num = str.charAt(index);

    }else{
      index = -(index);
      num = str.charAt(index);
    }
    return num;

  }
    console.log(getDigit(12345,3));

嗨!我正在尝试实现辅助函数getDigit()         返回我传递给函数的数字的数字,例如         getDigit(12345,1)应该给我4作为输出,并且(12345,2)         应该给我3作为输出...为什么我的函数不返回         什么东西?

2 个答案:

答案 0 :(得分:0)

这里是一种用于负索引或可能大于字符串长度的索引的方法。索引被包裹起来,就好像字符串会无限期地重复。

function getDigit(number, index) {
  const str = (number || 0).toString().split('').reverse().join('');
  let idx = index;
  while (idx < 0) idx += str.length;
  return str.charAt(idx % str.length);
}

console.log(JSON.stringify(
  [-10, -1, 0, 1, 2, 3, 4, 5, 10].map(i => getDigit(12345, i))
));

答案 1 :(得分:0)

JavaScript不允许负索引从末尾开始计数。

如果要将索引转换为末尾,请从长度中减去索引,然后再减去1。无需特别处理0

function getDigit(number, index) {
  let str = number.toString();
  index = str.length - index - 1;
  let num = str.charAt(index);

  return num;

}
console.log(getDigit(12345, 3));
console.log(getDigit(12345, 0));
console.log(getDigit(12345, 1));