在Javascript中将数组分成两部分

在Javascript中将数组分成两部分,javascript,arrays,for-loop,while-loop,Javascript,Arrays,For Loop,While Loop,我有一个N个元素的数组。我想分成两个数组。唯一的条件是,第一个新数组由原始数组的前三个元素组成,第二个新数组必须包含所有其他元素。 例如,原始数组包含[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”]。我想创建两个新阵列: first new array: ["a, "b", "c"]; second new array: ["d","e","f", "g","h"]. 但是我的代码在很大程度上划分了原始数组的时间。为什么? 函数MyCtrl($scope){ $scope.

我有一个N个元素的数组。我想分成两个数组。唯一的条件是,第一个新数组由原始数组的前三个元素组成,第二个新数组必须包含所有其他元素。 例如,原始数组包含
[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”]
。我想创建两个新阵列:

first new array: ["a, "b", "c"];
second new array: ["d","e","f", "g","h"].
但是我的代码在很大程度上划分了原始数组的时间。为什么?

函数MyCtrl($scope){
$scope.strengthChartData=[“香蕉”、“橘子”、“苹果”、“芒果”、“asd”、“lol”、“啊哈哈哈哈”、“llllll”、“ehhehehe”、“ooooo”、“aaaaa”、“bbbbbb”];
$scope.arrays=[];
变量大小=3;
而($scope.strengthChartData.length>0)
$scope.array.push($scope.strengthChartData.splice(0,size));
}

所有要素:

  • {{array}
第一个阵列:
  • {{array}
第二个阵列:
  • {{array}
您可以使用进行此操作

var arr=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”],
arr1=arr.拼接(3);

write(JSON.stringify(arr)+'
'+JSON.stringify(arr1))使用切片,例如:

var-ar=[1,2,3,4,5,6];
var p1=ar切片(0,4);
var p2=ar.slice(4)至于原因:

strengthChartData
的长度为12。在这段时间内,您将推送到
数组
变量
strengthChartData
的前3个元素,并将它们从
strengthChartData
中删除,因为拼接修改了数组


所以你的长度现在是3减。当长度大于0时执行此操作,这意味着它将在长度为12,9,6,3时运行,并在0处停止。因此,您实际上将前3个元素从
strengthChartData
推到
数组
变量

上四次,这将改变原始元素。我想(还不是100%清楚)他不想改变原始数组。尽可能避免while条件-除非你同意某些东西在后台无限期运行的可能性。如果某件事可以用有限周期来解决,那通常是更好的方法。
var a = ["a","b","c","d","e","f","g","h"];

var b = a.slice(0,3); // => ["a","b","c"]
var c = a.slice(3);   // => ["d", "e", ... ]