我想在不和諧訊息中列出一個陣列。到目前為止,我有以下代碼:
message.channel.send("Game is starting with " playerNumber " Players! \n"
memberIDs.forEach(element => ("<@" element "> \n")));
該memberIDs陣列包含來自特定頻道中成員的所有 ID,現在我想將頻道中的所有成員放入訊息中。我已經用上面的代碼試過了,但它只給了我資訊:
Game is starting with *playerNumber* Players!
undefined
我真的不明白為什么它是未定義的,因為它還會在控制臺日志中為我提供 memberID,或者當我使用為每個 memberID 創建的訊息創建一個 forEach 回圈時。
console.log 中的陣列鎖定如下:
[ '392776445375545355', '849388169614196737' ]
我很感激任何幫助。
uj5u.com熱心網友回復:
簡短的回答
forEach()不是你的朋友;你需要map()和join()
長答案
是呼叫undefined的結果,forEach()它不回傳任何東西。
所以你需要得到一個字串。
為此,您可以使用.map()which 回傳一個陣列;并將.join()一個字串陣列連接成一個字串。
像這樣的東西:
memberIDs.map(element => "<@" element ">" ).join('\n');
uj5u.com熱心網友回復:
forEach遍歷一個陣列并且不回傳任何東西。改用:map_join
message.channel.send("Game is starting with " playerNumber " Players! \n"
memberIDs.map(element => `<@${element}>`).join('\n')
);
uj5u.com熱心網友回復:
Array#map()從回呼回傳一個回傳值陣列,而Array#forEach()回傳undefined。采用.map()
memberIDs.map(m => `<@${m}>`)
.join("\n") // join each element with a newline
uj5u.com熱心網友回復:
forEach在 JavaScript 中不回傳任何內容,這意味著它memberIDs.forEach(element => ("<@" element "> \n")))始終是未定義的。
let idString = "";
memberIDs.forEach(element => (idString = idString "<@" element "> \n"))
message.channel.send("Game is starting with " playerNumber " Players! \n"
idString);
這段代碼的作用是在回圈之外定義一個變數forEach,然后在每次回圈運行時將字串附加到它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456431.html
標籤:javascript 数组 不和谐 不和谐.js
