![](/img/trans.png)
[英]Why is my querySelectorAll not working even though I converted it to an array?
[英]Why can I not push a number into my array of strings even though I have converted the number back to a string?
您好,我正在嘗試進行代碼大戰 kata: 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")
它似乎工作正常。 如果您在 push 后再次檢查 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?
Javascript push 方法將元素添加到數組並返回長度,這就是為什么你得到 11 而不是數組本身。 參考
您可以采用不同的方法,將值拆分為字符串和數字部分,並獲取數字部分的長度,以便稍后用前導零填充值。
function incrementString(value) { const string = (value.match(/\D+/) || [''])[0], number = (value.match(/\d+/) || ['0'])[0]; return string + (+number + 1).toString().padStart(number.length, 0); } function assertEquals(a, b) { console.log(a === b, a, b); } assertEquals(incrementString("foobar000"), "foobar001"); assertEquals(incrementString("foo"), "foo1"); assertEquals(incrementString("foobar001"), "foobar002"); assertEquals(incrementString("foobar99"), "foobar100"); assertEquals(incrementString("foobar099"), "foobar100"); assertEquals(incrementString(""), "1");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.