我有一個 JavaScript 函式,可以3/5使用星形 HTML 物體將數字評分轉換為視覺評分:
★ ★ ☆ ☆
這是我的功能:
function ratings(rating, total)
{
var stars = '';
for(var i = 0; i < total; i )
{
if(i < rating)
{
stars = ' ★ ';
}
else
{
stars = ' ☆ ';
}
}
return stars;
}
document.write(ratings(3, 5 ));
我想將其轉換為箭頭函式。這是我到目前為止所擁有的:
const ratings = (rating, total) => {
let stars;
for(var i = 0; i < total; i )
{
if(i < rating)
{
stars = ' ★ ';
}
else
{
stars = ' ☆ ';
}
}
return stars;
};
document.write(ratings(3, 5 ));
我已經看到了一些使用map,forEach和filter回圈遍歷陣列的漂亮干凈的箭頭函式示例。有什么類似的東西可以與我的功能一起使用嗎?不是回圈遍歷陣列,而是回圈 x 次。
uj5u.com熱心網友回復:
您根本無法迭代以更快更好地閱讀:
const ratings = (rating, total) => ' ★ '.repeat(rating) ' ☆ '.repeat(total-rating);
document.write(ratings(3, 5));
uj5u.com熱心網友回復:
或類似的東西...
const ratings = (rating, length) =>
Array.from({length},(_,i) => (i < rating) ? '★' : '☆')
.join(' ');
document.write(ratings(3, 5 ));
uj5u.com熱心網友回復:
您可以使用該方法Array.from創建/初始化您的第一個陣列。然后,您可以映射此陣列以創建您的評級。不要忘記join結果來獲得一個字串作為結果。
const ratings = (rating, total) => Array.from({length: total})
.map((star, i) => (i < rating) ? ' ★ ' : ' ☆ ')
.join('');
document.write(ratings(3, 5 ));
uj5u.com熱心網友回復:
你的問題不是關于箭頭函式,因為你已經有了一個,而是如何從陣列及其方法的角度來思考。
首先,我們創建一個長度為 (1) 的陣列total,因為無論型別如何,它始終是星星的數量。這是一個稀疏陣列,所以我們需要將.fill("whatever")它變成我們可以的東西map。
然后,根據其索引是否小于或等于評級(2),將每個專案映射到相應的星號
注意_忽略實際專案,因為我們只關心索引。
這為我們提供了所需的星星陣列,我們所要做的就是join(" ")讓它們有一個我們可以放入檔案中的正確字串。(3)
const ratings = (rating, total) => {
return Array(total) // 1
.fill("")
.map((_, i) => i < rating ? "★" : "☆") // 2
.join(" ") // 3
};
document.write(ratings(3, 5 ));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/511141.html
上一篇:在SAS中執行while回圈
