var line = "Stands so high ";
let position = -1;
for (; line[position] == " ";) {
position--;
console.log(position);
}
輸出什么也沒有。為什么會這樣?我希望它控制臺記錄值position。我使用過node和chrome 開發者工具控制臺。對任何一個都不起作用。
uj5u.com熱心網友回復:
雖然在其他一些語言中,負字串索引可用于從末尾倒數,但在 JavaScript 中并非如此。
較新的 JS 引擎支持該at方法:
var line="Stands so high ";
let position=-1;
for(;line.at(position)==" ";) {
position--;
console.log(position);
}
uj5u.com熱心網友回復:
var line = "Stands so high";
for (let position = 0; position < line.length; position ) {
console.log(position);
}
uj5u.com熱心網友回復:
盡管您的問題還不夠清楚,但我希望我能闡明 for...loop 的使用。
for...loop 用于迭代。遍歷(傳遞)可下標(即使用索引號)的序列(如字串)或集合(如陣列)。為了能夠使用 for...loop 語法,您需要在 for...loop 宣告部分提供 3 個部分。初始化、test_expression和step。雖然,它們的使用不限于在括號內。這就是為什么您的代碼可以使用的原因只是需要進行一些重組。事實上,它們可以完全省略以形成無限回圈。請參閱下面的語法:
for (initialization ; test_expression ; step/incrementation_or_decrementation){ ... }
for (; ; ){ ... } // Omitting the 3-parts turns this for...loop into an infinite loop.
在可以執行回圈體(由上面的...表示)之前,您的test_expression必須評估為true。您的初始化和步驟確保在某一時刻test_expression被評估為false,因此您的 for...loop 不會進入無限回圈。
讓我們仔細看看我們的代碼[關注我的評論]:
var line="Stands so high ";
let position=-1; // This line serves your **initialization** part below.
for(;line[position]==" ";) { // Your **test_expression** IS NOT evaluating to **true**
position--; // This line serves your **step** part above.
console.log(position);
}
注意: 在 Javascript 中,不可能像在 for...loop 宣告中那樣提供負索引。這在 Python 中是 100% 可能的,但不是 JS。這就是為什么您的test_expression沒有評估為true的原因。
line[position] // will always evaluates to **undefined** because position is **-1** for the 1st expected iteration.
...并且undefined不等于""。
解決方案 1: 如果要在迭代中記錄位置直到第一次出現空白,請考慮按如下方式重組代碼:
var line="Stands so high ";
let position=-1; // Your **initialization** suggest you're traversing from letter **S** to the right side.
for(;line[position]!=" ";) { // Consider changing **==** to **!=**
position ; // Consider **step to increment** i.e move to next character to test it.
console.log(position);
}
...如果這是你的意圖,你可以通過快速定位你的第一個空白來簡單地實作這一點。
var line="Stands so high ";
console.log( line.indexOf(" ") ); // This will log 6, which is the position of first white-space.
解決方案 2: 如果您打算計算變數line中的單詞數,請使用以下命令:
var line="Stands so high ";
console.log( line.trim().replace(" ", " ").split(" ").length ); // This will output **3**, meaning 3-words.
...在這里,我將幾種方法相互鏈接,以將一種方法的輸出提供給另一種方法的輸入。 line.trim()洗掉前導和尾隨空格(即真實句子前后的空格) .replace(" ", " ")用單個空格替換所有出現的雙空格。 .split(" ") 使用單個空格作為分隔符將句子分成單詞陣列。因為空格被用作單詞的分隔符。 .length計算陣列中的總字數。
隨時問我任何問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/486094.html
標籤:javascript 细绳
上一篇:在一行上顯示短標簽
