Javascript 从数组中获取一个随机数(1到6个数字,如骰子)对象,然后将其从数组中移除
当生成随机数后从数组中移除对象时会出现问题,即“时间是随机数”大于数组的长度,然后出现类似“无法读取”属性的错误 这是我的主.s文件Javascript 从数组中获取一个随机数(1到6个数字,如骰子)对象,然后将其从数组中移除,javascript,jquery,html,Javascript,Jquery,Html,当生成随机数后从数组中移除对象时会出现问题,即“时间是随机数”大于数组的长度,然后出现类似“无法读取”属性的错误 这是我的主.s文件 var data = [ { id:1, account_name:'Akshay Patil', debit:111, credit:'' }, { id:2, account_name:'Bharat Chavan', deb
var data = [
{
id:1,
account_name:'Akshay Patil',
debit:111,
credit:''
},
{
id:2,
account_name:'Bharat Chavan',
debit:222,
credit:''
},
{
id:3,
account_name:'Chetan Kore',
debit:333,
credit:''
},
{
id:4,
account_name:'Dilip Patil',
debit:444,
credit:''
},
{
id:5,
account_name:'Eshawr Dange',
debit:555,
credit:''
},
{
id:6,
account_name:'farhan Khan',
credit:666,
debit:''
},
{
id:7,
account_name:'Ganesh Shine',
credit:777,
debit:''
},
{
id:8,
account_name:'Hemant Birje',
credit:888,
debit:''
}
]
使用此js i m拼接生成的随机对象并设置为表数据,这应该可以工作
function(){
user.wrapper.find('.randomMove').off('click').on('click', function(event){
var dice = {
sides: 6,
roll: function () {
var randomNumber = Math.floor(Math.random() * this.sides) + 1;
return randomNumber;
}
}
var result = dice.roll();
result--;
//setDataInTable(result);
user.data.splice(result,1);
});
}
您应该根据数组长度生成随机数
var len = data.length;
var rand = Math.random() * (len - 0) + 0;
var selected = data[rand];
data.splice(rand, 1)
现在要删除随机元素:
var randomIndex = Math.floor( Math.random() * data.length );
// Index 0 - first
// Index (data.length-1) - last
之后,要获得另一个随机元素,您应该生成一个新的随机索引并再次拼接。首先,您需要找到要删除的元素的索引:
var element = data.splice(randomIndex, 1)[0];
console.log(element);
使用接头将其拆下后:
var array = [1, 10, 100];
//edited to choose it random
var selectedItem = array[Math.floor(Math.random()*array.length)];
var index = selectedItem;
我假设这是JavaScript,并且只有在从数组中删除元素后才会发生错误。我猜你正在浏览这个列表,并试图洗牌其中的内容 发生的事情是: 从一个8个元素长的数组开始。然后删除一个元素,使其长度为7个元素。然后,如果它选择要删除的元素8,则无法删除,因为只剩下7个元素。这就是您获取错误消息的方式。 请改用此代码:
var数据=[
{
id:1,
账户名称:'Akshay Patil',
借方:111,
信用证:''
},
{
id:2,
账户名称:'Bharat Chavan',
借方:222,
信用证:''
},
{
id:3,
账户名称:'Chetan Kore',
借方:333,
信用证:''
},
{
id:4,
账户名称:'Dilip Patil',
借方:444,
信用证:''
},
{
id:5,
账户名称:'Eshawr Dange',
借方:555,
信用证:''
},
{
id:6,
账户名称:'farhan Khan',
信用证号码:666,
借方:''
},
{
id:7,
账户名称:'Ganesh Shine',
信用证号码:777,
借方:''
},
{
id:8,
账户名称:'Hemant Birje',
信用证号码:888,
借方:''
}
]
函数getRandomInt(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
函数deleteRandom(){
数据拼接(getRandomInt(0,数据长度),1);
}
控制台日志(数据);
deleteRandom();
控制台日志(数据)代码>
var数据=[
{
id:1,
账户名称:'Akshay Patil',
},
{
id:2,
账户名称:'Bharat Chavan',
},
{
id:3,
账户名称:'Chetan Kore',
},
{
id:4,
账户名称:'Dilip Patil',
}
]
函数removietem(){
调试器;
var lengthOfArray=data.length;
var spilceId=Math.floor(Math.random()*lengthOfArray);
如果(长度法拉利>0){
数据拼接(spilceId,1)
}
//或者根据id的索引删除数据
控制台日志(数据);
}
remove
我想你的实际问题是洗牌数组,对吗?你能把你写的代码也附上吗?Thank.function setListeners(){user.wrapper.find('.randomMove').off('click').on('click',function(event){var dice={sides:6,roll:function(){var randomNumber=Math.floor(Math.random()*this.sides)+1;返回randomNumber;}}var result=dice.roll();result--;setDataInTable(result);user.data.splice(result,1);})}@penguin_k plz检查我附加的代码谢谢,但我不想根据数组长度。我有骰子辊根据这个我要解决
if (index > -1) {
array.splice(index, 1);
}