您好,我正在尝试编写代码战卡塔:https://www.codewars.com/kata/54a91a4883a7de5d7800009c/train/javascript
我知道我所做的事情很冗长,但我想在重构之前一步一步地做。
我知道这不是kata的最终答案,但我只是在尝试,想知道为什么这不起作用......
function isNumeric(num){
return !isNaN(num)
}
function incrementString (string) {
const splitString = string.split("");
let numbers = Number(splitString.filter(el => isNumeric(el)).join("")); //[
'f', 'o', 'o', 'b',
'a', 'r', '0', '0',
'4', '2'
]
let incrementNumber = numbers +=1; // 43
let revertNumberToString = incrementNumber.toString(); // "43"
let test = splitString.push(revertNumberToString); // why can I not push the number 43 onto my original array?
console.log(test); // 11? why?
}
incrementString("foobar0042")
答案 0 :(得分:2)
它似乎工作正常。如果您在推送后再次检查 splitString,那么它将包含所有 11 个项目。这就是数字 11 的来源。当您保存对变量的推送时,它不会创建一个新数组,而是保存新数组的长度。
console.log(splitString)
// ["f", "o", "o", "b", "a", "r", "0", "0", "4", "2"]
let test = splitString.push(revertNumberToString);
console.log(splitString)
// ["f", "o", "o", "b", "a", "r", "0", "0", "4", "2", 43]
console.log(test); // 11? why?
答案 1 :(得分:2)
Javascript push 方法将元素添加到数组并返回长度,这就是为什么你得到 11 而不是数组本身。 Reference