版主,高手,快来啊,救命啦。,50红包

chinashiji 2017-06-29 05:34:04
ddd="a,b,c,d,e,f,g,h,i,g"
var bbb=ddd.replace(/,/g,'","');
var dddd='["'+bbb+'"]';
alert(dddd)
var arr = dddd;

    var index = Math.floor((Math.random()*arr.length));
    var acc=arr[index];
var dd= arr .splice(index,1,'0');// 替换该位置的元素
alert(dd)

~~~~~~~~~~~~~~~~~~~~~~~~~
数组是动态的,每次都不一样
现在我想每次随机一个后,就替换这个数组的相应的是0

但是,现在每次替换后,都不显示了,为什么啊???
如果数组不是动态的,比如
var arr = ["a","b","c","d","e","f","g","h","i","g"]
这样直接赋值的话,就可以显示 alert(dd)

为什么啊,怎么样才能动态数组也成功呢??救命啊,50红包
...全文
228 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-06-29
  • 打赏
  • 举报
回复
引用 11 楼 chinashiji 的回复:
不能删除啊,删除了,下次取值,下标就变了啊,我要原始数组的下标。 删除了下次取值,原始下标也变了啊

var ddd="a,b,c,d,e,f,g,h,i,g";// 获取字符串
var arr = ddd.split(',') // 根据,切分成数组
for (var i=0;i<10;i++)
{
	var index;
	while (arr[index = Math.floor((Math.random()*arr.length))]=="0"); // 生成随机数
	var dd = arr[index];
	arr.splice(index,1,'0');
	alert(dd)
	alert(index)
	alert(arr) //arr已经被改变
}	
chinashiji 2017-06-29
  • 打赏
  • 举报
回复
不能删除啊,删除了,下次取值,下标就变了啊,我要原始数组的下标。 删除了下次取值,原始下标也变了啊
天际的海浪 2017-06-29
  • 打赏
  • 举报
回复

var ddd="a,b,c,d,e,f,g,h,i,g";// 获取字符串
var arr = ddd.split(',') // 根据,切分成数组
for (var i=0;i<10;i++)
{
	var index = Math.floor((Math.random()*arr.length)); // 生成随机数
	var acc= arr[index]; // 这行没用。
	var dd = arr.splice(index,1);// 直接删除你取出的那个元素,不用替换0,下次就只从剩下的元素中随机选了
	alert(dd)
	alert(arr) //arr已经被改变
}	
chinashiji 2017-06-29
  • 打赏
  • 举报
回复
不能删除啊,删除了,下次取值,下标就变了啊,我要原始数组的下标
chinashiji 2017-06-29
  • 打赏
  • 举报
回复
var eee="a,b,c,d,e,f,g,h,i,g";// 获取字符串 var ddd=eee for (var i=0;i<5;i++) { var arr = ddd.split(',') // 根据,切分成数组 var index = Math.floor((Math.random()*arr.length)); // 生成随机数 var acc= arr[index]; // 这行没用。 var dd = arr.splice(index,1,'0');// 替换该位置的元素,这个返回值是被替换的元素 alert(dd) alert(arr) //arr已经被改变 eee = arr.join(',') // 你要的ddd alert(eee) } 我这样循环了5次,但是发现每次循环后,alert(eee)但是替换了0 但是下次循环,上次的0又恢复了,怎么办啊
天际的海浪 2017-06-29
  • 打赏
  • 举报
回复
直接删除你取出的那个元素,不用替换0,下次就只从剩下的元素中随机选了 arr.splice(index,1);
chinashiji 2017-06-29
  • 打赏
  • 举报
回复
额,我有点头晕了 ddd是已经出来了,但是,额 把最后这个ddd = arr.join(',') // 你要的ddd再怎么赋值给第一个var ddd="a,b,c,d,e,f,g,h,i,g";// 获取字符串呢?因为我每次替换了就想让第一个ddd改变,然后下次不取为0的 不要骂我啊,我糊涂了
chinashiji 2017-06-29
  • 打赏
  • 举报
回复
数组=a,b,c,d,e for (var i=0;i<5;i++) { 取数组任意一个不是0的,然后执行.........(这里需要下标,比如a=0,b=1....) 把已经取到的值替换成0。。。(替换是因为害怕原数组下标变化,又更好的办法当然更好) } 我大概意思就是这样的
functionsub 2017-06-29
  • 打赏
  • 举报
回复
var ddd="a,b,c,d,e,f,g,h,i,g";// 获取字符串
var arr = ddd.split(',') // 根据,切分成数组
var index = Math.floor((Math.random()*arr.length)); // 生成随机数
var acc= arr[index]; // 这行没用。
var dd = arr.splice(index,1,'0');// 替换该位置的元素,这个返回值是被替换的元素
alert(dd)
alert(arr) //arr已经被改变
ddd = arr.join(',') // 你要的ddd
chinashiji 2017-06-29
  • 打赏
  • 举报
回复
等一下,不对啊老大 我想改变的是数组,因为我这个要用10次,每次都要随机和上次不一样的,你现在只是改变了(arr 但是我想改变的是ddd啊 var fff="a,b,c,d,e,f,g,h,i,g"; var ddd=fff 因为fff每次都是不一样的啊 我要改变这个ddd 让代码下次不要在用已经替换过的数组里面元素了
chinashiji 2017-06-29
  • 打赏
  • 举报
回复
额,老大教训的对,你的代码没错,我错了,我以后一定好好学JS 老大,你支付宝二维码发一下,给你发红包,30可以不啊
functionsub 2017-06-29
  • 打赏
  • 举报
回复
什么乱七八糟的,arr是数组么? 你就splice
var ddd="a,b,c,d,e,f,g,h,i,g";// 获取字符串
var arr = ddd.split(',') // 根据,切分成数组
var index = Math.floor((Math.random()*arr.length)); // 生成随机数
var acc= arr[index]; // 这行没用。
var dd = arr.splice(index,1,'0');// 替换该位置的元素,这个返回值是被替换的元素
alert(dd)
alert(arr) //arr已经被改变

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧