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作为输出...为什么我的函数不返回 什么东西?
答案 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));