[英]How to generate a random number from an array using Javascript?
我正在嘗試從數組中生成一個隨機的 SKU 編號。 使用 Math.floor() 和 Math.random() 獲取索引。 但它只返回一個字母或數字而不是整個字符串。 這是 function:
function bookRentData(bookData) {
bookData.forEach((book) => {
//generate random sku number
const sku = book.sku
var random = sku[Math.floor(Math.random() * sku.length - 1)];
document.getElementById("message").innerHTML = sku[random];
});
wrap.innerHTML += `<tr>
<td>${book.sku}</td>
<td>${book.price}</td>
</tr>`
}
預計 output: 101ZS536
當前 output: Z
// example of the data
[{sku: '101ZS536',
price: 4.37
},
{
sku: '10134QYT',
price: 42.61
},
{
sku: '10134QYT',
price: 53.31
},
{
sku: '10134QYT',
price: 0
},
{
sku: '10134QYT',
price: 3.46
}
]
任何意見或建議將不勝感激。
檢查這是否滿足您的場景。
function bookRentData() { var bookData = [{sku: '101ZS536', price: 4.37 }, { sku: '10134QYT', price: 42.61 }, { sku: '10134QXT', price: 53.31 }, { sku: '10134QZT', price: 0 }, { sku: '10134QST', price: 3.43 }, { sku: '10134QCT', price: 3.46 }, { sku: '10134QYT', price: 3.1 }, { sku: '10134QYT', price: 3.2 }, { sku: '10134QBT', price: 3.6 }, { sku: '10134QYT', price: 3.5 }, { sku: '10134QJT', price: 3.1 }, { sku: '10134QYT', price: 3.2 }, { sku: '10134QRT', price: 3.6 }, { sku: '10134QKT', price: 3.5 } ]; book = bookData[Math.floor(Math.random() * bookData.length)] var x = document.getElementById("demo") x.innerHTML = book.sku; }
<!DOCTYPE html> <html> <body> <p>Test</p> <button onclick="bookRentData()">Try it</button> <p id="demo"></p>
也許這會起作用:
function bookRentData(bookData) {
book = bookData[Math.floor(Math.random() * bookData.length - 1)]
wrap.innerHTML += `<tr>
<td>${book.sku}</td>
<td>${book.price}</td>
</tr>`
}
我假設您需要列表中的一個sku
,因為您需要一個隨機的。 (如果你想要所有,那么就不需要它們是隨機的。)
PS評論如果我沒有正確理解你的問題
您有Math.floor(Math.random() * sku.length - 1)
,有時可能會返回-1
。
要生成 0 到長度之間的數字,您可以更改為:
var random = sku[Math.floor(Math.random() * sku.length)];
這是一個簡單易讀的答案,它使用rando.js從數組中訪問一個隨機值,然后訪問該 object 的 sku:
var arr = [ {sku: '123ZS536', price: 4.37}, {sku: '45634ABC', price: 42.61}, {sku: '10134DEF', price: 53.31}, {sku: '78934GHI', price: 0}, {sku: '10134QYT', price: 3.46} ]; console.log( rando(arr).value.sku );
<script src="https://randojs.com/1.0.0.js"></script>
如果您想使用此代碼,請不要忘記將該腳本標記放在 html 文檔的頭部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.