我正在嘗試解決一個需要陣列和回圈的問題。
任務只是取一個隨機字串并寫出所有字母,使其看起來像這樣:R, Ra, Ran, Rand ,Rando , Random, RandomS, RandomSt, RandomStr, RandomStri, RandomStrin, RandomString。
我這樣解決了那部分:
function sometext() {
var temptext = document.getElementById("textinput").value;
var temparray = [];
temparray = temptext.slice();
for (var i = 0; i <= temparray.length; i ) {
document.getElementById("printit").innerHTML = temparray.slice(0, i) "<br/>";
}
}
<input id="textinput" onchange="sometext()">
<div id="printit"></div>
該代碼運行它從任何人寫入的輸入框中獲取的字串。
下一步是讓這個字串洗掉第一個字母,然后像上面一樣寫出來,它看起來像這樣:a, an, and, ando, andom, andomS, andomSt, andomStr, andomStri, andomStrin, andomString 然后洗掉再次是第一個字母,因此輸出將是:n、nd、ndo、ndom、ndomS、ndomSt、ndomStr、ndomStri、ndomStrin、ndomString 等等,直到它用完要洗掉的字母。我不知道如何使它適用于任何數量的字母。
示例輸出
R
Ra
Ran
Rand
Rando
Random
a
an
and
ando
andom
n
nd
ndo
ndom
d
do
dom
o
om
m
uj5u.com熱心網友回復:
地圖和班次怎么樣
const output = document.getElementById("printit");
function sometext(fld) {
let temptext = [...fld.value]; // or fld.value.split("")
const arr = []
while (temptext.length > 0) {
arr.push(
temptext.map((_, i) => temptext.slice(0, i 1).join("")).join("<br>")
)
temptext.shift(); // drop first letter
}
output.innerHTML = arr.join("<br/>")
}
<input id="textinput" oninput="sometext(this)">
<div id="printit"></div>
uj5u.com熱心網友回復:
當您獲得包含所有所需值的陣列時,只需迭代并根據需要將其列印或列印到 html 或控制臺
const text = 'Random';
const result = [...text].flatMap((ch, index) => {
const righPart = text.slice(index, text.length);
const leftParts = [...righPart].map((ch, index) => righPart.slice(0, index 1))
return leftParts;
});
console.log(result)
.as-console-wrapper{min-height: 100%!important; top: 0}
- - 更新 - -
它只是兩個相似功能的組合
第一個只回傳字串正確部分的陣列:
const text = 'Random'
[...text].map((ch, index) => text.slice(index, text.length))
// ['Random', 'andom', 'ndom', 'dom', 'om', 'm']
第二個是相似的,只retern 左邊的部分:
const text = 'Random'
[...text].map((ch, index) => text.slice(0, index 1))
// ['R', 'Ra', 'Ran', 'Rand', 'Rando', 'Random']
在解決方案中,我.flatMap()用來使結果陣列變平。就這樣。
uj5u.com熱心網友回復:
<script>
function sometext() {
var temptext = document.getElementById("textinput").value;
var temparray = [];
temparray = temptext.slice();
for (var i = 0; i <= temparray.length; i )
{
document.getElementById("printout").innerHTML = temparray.slice(0, i) "<br/>";
if (i == temparray.length)
{
for (var i = 1; i <= temparray.length; i )
{
document.getElementById("printout").innerHTML = temparray.slice(1, i) "<br/>";
if (i == temparray.length)
{
for (var i = 2; i <= temparray.length; i )
{
document.getElementById("printout").innerHTML = temparray.slice(2, i) "<br/>";
if (i == temparray.length)
{
for (var i = 3; i <= temparray.length; i )
document.getElementById("printout").innerHTML = temparray.slice(3, i) "<br/>";
if (i == temparray.length)
{
for (var i = 4; i <= temparray.length; i )
{
document.getElementById("printout").innerHTML = temparray.slice(4, i) "<br/>";
if (i == temparray.length)
{
for (var i = 5; i <= temparray.length; i )
{
document.getElementById("printout").innerHTML = temparray.slice(5, i) "<br/>";
if (i == temparray.length)
{
for (var i = 6; i <= temparray.length; i )
{
document.getElementById("printout").innerHTML = temparray.slice(6, i) "<br/>";
}
}
}
}
}
}
}
}
}
}
}
}
}
</script>
<p><input type="text" id="textinput" value=""></p>
<p><input type="button" value="Check it out" onclick="sometext()">
</p>
<div id="printout"></div>
我正在展示我是如何第一次回答它的,它運行一個回圈并列印出第一次迭代,然后當 i == temparray.length 它開始一個新回圈,我從下一個數字開始并列印出下一次迭代以及何時它到達陣列的長度,它再次從下一個數字開始,這個程序持續 6 次迭代。現在這看起來不太好,因為它不是一個通用的解決方案,這就是我試圖弄清楚但沒有成功的東西。就像現在的代碼一樣,它是針對 6 個字符的單詞進行的,為了使其包含 7 個字符,我只需要添加另一個 if (i == temparray.length) 和 for (var i = [previousNumber 1]; i < temparray.length; i ) 然后將其寫在 div 元素上。它有效,但在我看來它不是很漂亮。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395631.html
標籤:javascript 数组 循环 片
上一篇:陣列函式“push”和“splice”Javascript
下一篇:給定X的元素對陣列的磁區
