Javascript

时间:2016-06-02 13:15:21

标签: javascript

首先,我想提及我知道如何使用array.sort 解决此任务,这是最可接受的方式。 但我想了解为什么我的行为失败了。所以我有2个数组 - v_a,其中包括3个值 - '1','2','3'和空数组v_a_resorted,其中我想存储以随机顺序排列的v_a值。 因此,逻辑上,我在v_a中得到随机值,将其拼接在v_a中,然后将其推送到v_a_resoreted。没有因为它以这种方式寻找我:

	var v_a = new Array ('1','2','3');
	var v_a_resorted = [];
	var v_a_l = v_a.length;
	var r_v_a_n = Math.floor(Math.random() * (v_a_l - 0+0)) + 0;
	v_a.splice(r_v_a_n, 1);
	v_a_resorted.push(v_a[r_v_a_n]);
	document.write("<b>Random number</b> -" + r_v_a_n + "<br>");	
	document.write("<b>Transportation unit</b> -" + v_a[r_v_a_n] + "<br>");
	document.write("<b>Old Array</b> -" + v_a + "<br>");	
	document.write("<b>New Array</b> -" + v_a_resorted + "<br>");	

但它不起作用。例如。如果随机数= 1,则运输单位= 2且旧数组= 1,3且新数组= 2。 但就我而言,它是:随机数= 1,运输单位= 3,旧数组= 1,3,新数组= 3。

但为什么?

2 个答案:

答案 0 :(得分:1)

好像你从第一个数组中删除了一个元素并尝试将其推送(已经使用splice删除)到第二个数组中 更改splicepush来电是您要实现的目标

	var v_a = new Array ('1','2','3');
	var v_a_resorted = [];
	var v_a_l = v_a.length;
	var r_v_a_n = Math.floor(Math.random() * (v_a_l - 0+0)) + 0;
    document.write("<b>Random number</b> -" + r_v_a_n + "<br>");	
	document.write("<b>Transportation unit</b> -" + v_a[r_v_a_n] + "<br>");
	v_a_resorted.push(v_a[r_v_a_n]);//this line
    v_a.splice(r_v_a_n, 1);//and this one    	
	
	document.write("<b>Old Array</b> -" + v_a + "<br>");	
	document.write("<b>New Array</b> -" + v_a_resorted + "<br>");	

答案 1 :(得分:0)

我相信这个问题已在另一篇文章中得到解答。

How to randomize (shuffle) a JavaScript array?