Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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 从数组中获取一个随机数(1到6个数字,如骰子)对象,然后将其从数组中移除_Javascript_Jquery_Html - Fatal编程技术网

Javascript 从数组中获取一个随机数(1到6个数字,如骰子)对象,然后将其从数组中移除

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

当生成随机数后从数组中移除对象时会出现问题,即“时间是随机数”大于数组的长度,然后出现类似“无法读取”属性的错误

这是我的主.s文件

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