Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript从数组中生成随机数?_Javascript - Fatal编程技术网

如何使用Javascript从数组中生成随机数?

如何使用Javascript从数组中生成随机数?,javascript,Javascript,我试图从阵列中生成一个随机SKU编号。使用Math.floor()和Math.random()获取索引。但它只返回一个字母或数字,而不是整个字符串。以下是函数: function bookRentData(bookData) { bookData.forEach((book) => { //generate random sku number const sku = book.sku var random = sku[Math.floor(M

我试图从阵列中生成一个随机SKU编号。使用Math.floor()和Math.random()获取索引。但它只返回一个字母或数字,而不是整个字符串。以下是函数:

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>`
   }
如有任何建议,我们将不胜感激

也许这会奏效:

函数bookRentData(bookData){
book=bookData[Math.floor(Math.random()*bookData.length-1)]
wrap.innerHTML+=`
${book.sku}
${book.price}
`
}
我假设您需要列表中的单个
sku
,因为您需要一个随机的。(如果你想要全部,那么它们就不必是随机的。)

PS注释如果我没有正确理解您的问题

您有
Math.floor(Math.random()*sku.length-1)
,它有时可能返回
-1

要生成介于0到长度之间的数字,可以更改为:

      var random = sku[Math.floor(Math.random() * sku.length)];


检查是否满足您的场景

函数bookRentData(){
var bookData=[{sku:'101ZS536',
价格:4.37
},
{
sku:'10134QYT',
价格:42.61
},
{
sku:'10134QXT',
价格:53.31
},
{
sku:'10134QZT',
价格:0
},
{
sku:'10134QST',
价格:3.43
},
{
sku:'10134QCT',
价格:3.46
},
{
sku:'10134QYT',
价格:3.1
},
{
sku:'10134QYT',
价格:3.2
},
{
sku:'10134QBT',
价格:3.6
},
{
sku:'10134QYT',
价格:3.5元
},
{
sku:'10134QJT',
价格:3.1
},
{
sku:'10134QYT',
价格:3.2
},
{
sku:'10134QRT',
价格:3.6
},
{
sku:'10134QKT',
价格:3.5元
}
];
book=bookData[Math.floor(Math.random()*bookData.length)]
var x=document.getElementById(“演示”)
x、 innerHTML=book.sku;
}

试验

试试看

以下是一个简单易读的答案,用于从数组中访问随机值,然后访问该对象的sku:

var-arr=[
{sku:'123ZS536',价格:4.37},
{sku:'45634ABC',价格:42.61},
{sku:'10134DEF',价格:53.31},
{sku:'78934GHI',价格:0},
{sku:'10134QYT',价格:3.46}
];
console.log(rando(arr.value.sku)

什么是
bookData
?为什么要使用
.forEach()
?什么是
book.sku
/
sku
?如果您回答了所有这些问题,您应该找到问题的根源。它返回
z
,因为
sku
值设置为等于
[1,0,1,z,S,5,3,6]
。i、 e.
book.sku
@Andreas
bookData
的值保存整个数据,
.forEach()
遍历数据中的每个对象,并且
book.sku
返回每个对象的每个图书sku编号。我正在尝试随机检索这些sku编号中的1个。谢谢,但这将返回整个对象。我只是试图从对象数组中检索SKU编号。在这种情况下,
10134QYT
。稍后,我将更新价格。您可以从对象获取SKU编号,对吗?检查更新的代码段,返回整个对象。我只是想得到SKU号。谢谢是的
book
是一个对象,但您的内部html将有编号。仅当它是
book.sku
      var random = sku[Math.floor(Math.random() * sku.length)];