Javascript 复杂建筑/分拣阵列

Javascript 复杂建筑/分拣阵列,javascript,Javascript,我有初学者技能,希望有人能帮助我使用JavaScript ECMA-262中的复杂脚本(尽可能基本的JS脚本,因为我使用的程序只有ECMA-262的较旧实现。因此一些数组函数,如“splice”甚至“concat”在该程序的语言参考中找不到。但是基本JS工作正常) 我试图从2个独立的子数组(子数组a=1,2,3和子数组B=4,5,6)中创建一个总共6个数字的数组,交替地将每个子数组中的一个数字(从每个子数组中随机选择)放入最后的6项数组中。此外,没有重复 例如,3,6,1,4,2,5 我试过在线

我有初学者技能,希望有人能帮助我使用JavaScript ECMA-262中的复杂脚本(尽可能基本的JS脚本,因为我使用的程序只有ECMA-262的较旧实现。因此一些数组函数,如“splice”甚至“concat”在该程序的语言参考中找不到。但是基本JS工作正常)

我试图从2个独立的子数组(子数组a=1,2,3和子数组B=4,5,6)中创建一个总共6个数字的数组,交替地将每个子数组中的一个数字(从每个子数组中随机选择)放入最后的6项数组中。此外,没有重复

例如,3,6,1,4,2,5

我试过在线搜索,这个板块,试过从2个子数组中选择拉链的方法,来选择奇数/偶数,等等。到目前为止,没有任何效果。但至少我有了更多的知识,让我能够以一种可能有助于创建更具体解决方案的方式提出这个问题。我会硬编码,但我认为可能的变体/案例数量可能相当大

我希望有人能在基本JS中推荐一个脚本/函数,它可以(1)设置每个随机子数组,然后(2)创建最终的6项数组


您好,

如果您仅限于现代JSAPI的一个子集,我可能会采取先合并两个数组(迭代),然后应用随机排序的方法。比如:

var arr1 = [1,2,3], arr2 = [4,5,6];
for (var i=0, len = arr2.length; i<len; i++) arr1[arr1.length] = arr2[i];
arr1.sort(function() { return 0.5 - Math.random(); });

至少提及您正在使用的实现。在你之前的问题中,我做了一些努力,并且。但是不要期望在没有给出问题的良好描述的情况下得到帮助(“基本JS”是一个模糊的描述)。嗨,Rob,谢谢你的帮助。我不确定如何描述实现。如果你指的是Opus文档。我将在这里添加它:在尝试建议的脚本之后,我意识到我最初发布的随机脚本是不正确的。另外,为了提出正确的问题,我需要更好地理解我在寻找什么。我认为这是一种改进的解决问题的方式。非常感谢。你的两个要求似乎有点奇怪。如果您创建两个随机3项数组只是为了将它们合并到6项数组中,您难道不能生成6个随机数,将3个随机数添加到每个较小的数组中,并将所有6个随机数添加到一个较长的数组中吗?(我假设这是一个有其他需求的较长项目的一部分,但只是一个想法)。为什么你认为你不能使用
splice
concat
-它到底在哪里执行?你真的应该使用多边形填充来实现这些。实现是一个用于在线学习课程的闪光灯动画。左侧有3个灯(1,2,3),右侧有3个灯(4,5,6)。与Simon类型的游戏动画类似,但在本练习中有所更改,闪光灯需要从左向右移动,而不是在同一侧上下移动。因此,它们以随机模式从一侧闪烁到另一侧。希望这有助于澄清。谢谢你的脚本。不幸的是,程序脚本(有限,请参见上文和脚本参考)不能使用“推送”。其他一切,但不是“推”。集合1,2,3需要与集合4,5,6交替使用。我认为这个6的数组可以有两个arr1成员相互跟随。它需要是arr1,arr2,arr1,arr2,arr1,arr2。@user1134527-编辑以避免推送-这是怎么回事?推送不在本创作程序(Opus)脚本参考指南中。如果使用“推送”,则会在脚本编辑器中显示错误。因此,我需要使用不包含“推送”的脚本。更大的问题是,最终数组不能包含来自同一子数组的2个或3个或更多元素。例如,1后面不能跟2或3,它后面必须跟第二个子阵列(4或5或6)中的元素。最终阵列控制哪些灯光将闪烁(显示/隐藏)。闪光灯必须是从一边到另一边,而不是在同一边。我确实编辑了帖子以避免推。Re:另一点,这会减少随机性,也会增加难度。一个令人满意的结果是
1,4,2,5,3,6
,但每次都是这样吗?谢谢你,我看到压力消失了。但另一点至关重要。我知道这可能不那么随机。但如果它能尽可能的随机,那就更好了。每次1,4,2,5,3,6都不起作用。我理解随机化的挑战,但不知何故,如果可能的话,它需要更加随机。随机原因:更具挑战性,会更好地保持听课者的兴趣。如果每次都使用相同的模式,则不会吸引他们的注意力/兴趣。
//prep - two arrays, randomised order
var arr1 = [1,2,3].sort(r_sort),
    arr2 = [4,5,6].sort(r_sort),
    final_arr = [],
    smallest_array = arr1.length < arr2.length ? arr1 : arr2;
function r_sort() { return 0.5 - Math.random(); }

//build final array - intersecting the two arrays
for (var i=0, len = smallest_array.length; i<len; i++) {
    final_arr[final_arr.length] = smallest_array[i];
    if (smallest_array == arr1 && arr2[i])
        final_arr[final_arr.length] = arr2[i];
    else if (smallest_array == arr2 && arr1[i])
        final_arr[final_arr.length] = arr1[i];

}

//result
alert(final_arr);