簡體   English   中英

如何使用 Javascript 從數組生成隨機數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM