我正在 Vannila JS 中制作隨機密碼生成器,我在以下代碼中面臨未知問題:function generatePassword(lower, upper, number, symbol, length) { let generatedPassword = ""; const typesCount = lower + upper + number + symbol; const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter( (item) => Object.values(item)[0] ); // Doesn't have a selected type if (typesCount === 0) { return ""; } // create a loop for (let i = 0; i < length; i += typesCount) { typesArr.forEach((type) => { const funcName = Object.keys(type)[0]; generatedPassword += randomFunc[funcName](); }); } const finalPassword = generatedPassword.slice(0, length); return finalPassword;}在此代碼塊中,如果我將語句括在大括號 {} 中,則Object.values(item)[0]將不起作用:const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter( (item) => Object.values(item)[0] );我不明白為什么會發(fā)生這種情況,我嘗試搜索文檔但無濟于事,謝謝!
1 回答

慕田峪9158850
TA貢獻1794條經(jīng)驗 獲得超7個贊
為了使 Filter 函數(shù)正確工作,它需要返回。虛假價值的真實。
當你寫成這樣
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => Object.values(item)[0]
);
結果隱式返回,即。Object.values(item)[0] 是返回值
但是如果你這樣寫
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { Object.values(item)[0] }
);
您還沒有從過濾器函數(shù)返回任何值,您需要為其添加一個 return 語句,例如
const typesArr = [{ lower }, { upper }, { number }, { symbol }].filter(
(item) => { return Object.values(item)[0]; }
);
- 1 回答
- 0 關注
- 122 瀏覽
添加回答
舉報
0/150
提交
取消