jac*_*ism 1 javascript arrays splice
我有一个数组,其中所有元素也是数组(整数),被称为mainArray.我试图用来splice()添加和删除其元素(子阵列).
最初mainArray有一个元素(一个带有一个整数的数组),我希望删除它并添加3个新的子mainArray数组,这些是在arraysToAdd中定义的.
mainArray = new Array(new Array(1));
arraysToAdd = new Array(new Array(1,2), new Array(1,4), new Array(1,7));
alert(arraysToAdd.length); // Returns: 3: as expected
mainArray.splice(0,1,arraysToAdd);
alert(mainArray.length); // Returns: 1: I want this to be 3
Run Code Online (Sandbox Code Playgroud)
我希望最后的长度为mainArray3(因为它应该包含3个子数组),但它似乎splice()是扁平的arraysToAdd,因此mainArray最终只是一个整数数组.
我错过了什么?
你缺少的是你在阵列数组中添加了一个数组数组.您想要添加每个单独的数组.
你可以.apply()这样做:
mainArray.splice.apply(mainArray, [0,1].concat(arraysToAdd));
Run Code Online (Sandbox Code Playgroud)
所以0和1你传递的参数与您的加入arraysToAdd,从而形成你要传递给参数.splice()通过.apply().
演示: http : //jsfiddle.net/QLwLA/
没有.apply(),你需要单独添加它们,如下所示:
mainArray.splice(0, 1, arraysToAdd[0], arraysToAdd[1], arraysToAdd[2]);
Run Code Online (Sandbox Code Playgroud)
演示: http : //jsfiddle.net/QLwLA/1/