从数组中获取随机数(像骰子一样的 1 到 6 个数字)对象,然后将其从数组中删除


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:''
}
]

生成随机数后对象从数组中删除时出现问题,时间是随机数大于长度数组,然后出现错误,例如无法读取属性。

这是我的主文件

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);
});
}

使用此 js 我拼接生成的随机对象并设置为表数据

这应该有效

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;

使用拼接将其移除后:

if (index > -1) {
array.splice(index, 1);
}

我假设这是JavaScript,并且只有在从数组中删除元素后才会发生错误。我猜您正在浏览列表并试图打乱内容。

正在发生的事情是这样的: 您从一个长度为 8 个元素的数组开始。然后你删除一个,使其有 7 个元素长。然后,如果它选择要删除的元素 8,则不能,因为只剩下 7 个元素。这就是您获取错误消息的方式。

请改用以下代码:

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:''
}
]
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function deleteRandom() {
data.splice(getRandomInt(0, data.length), 1);  
}
console.log(data);
deleteRandom();
console.log(data);

此代码获取您的数组,找出它有多长,然后删除它知道其中的元素。为了演示,这个将之前和之后的数组记录到控制台。

var data = [
{
id:1,
account_name:'Akshay Patil',
},
{
id:2,
account_name:'Bharat Chavan',
},
{
id:3,
account_name:'Chetan Kore',
},
{
id:4,
account_name:'Dilip Patil',
}
]
function removeItem(){
debugger;
var lengthOfArray = data.length;
var spilceId = Math.floor(Math.random() * lengthOfArray);

if(lengthOfArray > 0){
data.splice(spilceId,1)
}
// or remove data based on index of id
console.log(data);
}
<button onclick='removeItem()'>remove</button>

最新更新