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>