首先,我想提及我知道如何使用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。
但为什么?
答案 0 :(得分:1)
好像你从第一个数组中删除了一个元素并尝试将其推送(已经使用splice
删除)到第二个数组中
更改splice
和push
来电是您要实现的目标
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)
我相信这个问题已在另一篇文章中得到解答。