我正在嘗試使用 array.join() 或 array.toString() 將陣列轉換為字串,但它無法正常作業。當我 console.log 它保持為一個陣列。
我的直覺是這個問題來自與函式范圍相關的東西,但我還無法弄清楚。
我正在嘗試構建的專案是密碼生成器。
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const numbers = "0123456789";
const symbols = "!@#$%^&*_- =";
const button = document.querySelector(".gen-pass");
button.addEventListener("click", (e) => {
let password = [];
for (let i = 0; i < 4; i ) {
let randomLetters = letters[Math.floor(Math.random() * letters.length)];
let randomNumbers = numbers[Math.floor(Math.random() * numbers.length)];
let randomSymbols = symbols[Math.floor(Math.random() * symbols.length)];
password.push(randomLetters, randomNumbers, randomSymbols);
password.join();
}
console.log(password);
});
<button class="gen-pass">Generate!</button>
uj5u.com熱心網友回復:
你可以做這樣的事情
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const numbers = "0123456789";
const symbols = "!@#$%^&*_- =";
const button = document.querySelector(".gen-pass");
button.addEventListener("click", (e) => {
e.preventDefault();
const password = Array(4).fill(0).flatMap(_ =>
[
letters[Math.floor(Math.random() * letters.length)],
numbers[Math.floor(Math.random() * numbers.length)],
symbols[Math.floor(Math.random() * symbols.length)]
]
).join('');
console.log(password);
});
<button class="gen-pass">GENERATE</button>
基本上這段代碼生成和[字母,數字,符號,...]的陣列,然后將它們連接在一起
uj5u.com熱心網友回復:
Array.prototype.join()回傳一個字串。它不會更改呼叫它的物件。
您可能希望password在 for 回圈完成后創建一個新變數或進行變異,如下所示:
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const numbers = "0123456789";
const symbols = "!@#$%^&*_- =";
let password = [];
for (let i = 0; i < 4; i ) {
let randomLetters = letters[Math.floor(Math.random() * letters.length)];
let randomNumbers = numbers[Math.floor(Math.random() * numbers.length)];
let randomSymbols = symbols[Math.floor(Math.random() * symbols.length)];
password.push(randomLetters, randomNumbers, randomSymbols);
}
password = password.join('');
console.log(password);
uj5u.com熱心網友回復:
嘗試將您的回報更改為以下內容。這會將連接移動到在密碼創建結束時發生一次,并,通過告訴用空字串.join替換所有s 來洗掉 s:,
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const numbers = "0123456789";
const symbols = "!@#$%^&*_- =";
const button = document.querySelector(".gen-pass");
button.addEventListener("click", (e) => {
e.preventDefault();
let password = [];
for (let i = 0; i < 4; i ) {
let randomLetters = letters[Math.floor(Math.random() * letters.length)];
let randomNumbers = numbers[Math.floor(Math.random() * numbers.length)];
let randomSymbols = symbols[Math.floor(Math.random() * symbols.length)];
password.push(randomLetters, randomNumbers, randomSymbols);
}
console.log(password.join(""));
});
<button type="button" class="gen-pass">Generate Password</button>
uj5u.com熱心網友回復:
const button = document.querySelector(".gen-pass");
button.addEventListener("click", (e) => {
e.preventDefault();
let password = [];
let formattedPassword = '';
for (let i = 0; i < 4; i ) {
let randomLetters = letters[Math.floor(Math.random() * letters.length)];
let randomNumbers = numbers[Math.floor(Math.random() * numbers.length)];
let randomSymbols = symbols[Math.floor(Math.random() * symbols.length)];
password.push(randomLetters, randomNumbers, randomSymbols);
}
formattedPassword = password.join('');
console.log(password, formattedPassword);
});
uj5u.com熱心網友回復:
我能想到的最簡單的方法是使用以將資料轉換為字串而聞名的 JSON。在此處檢查此字串化功能:https ://www.w3schools.com/js/js_json_stringify.asp?msclkid=e8639fd0cfa411eca470fe06b0ce6da7
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471373.html
標籤:javascript
下一篇:NodeJS:Cookie未定義
