我有一个N元素的数组。我想分成两个阵列。唯一的条件是第一个新数组由原始数组的前三个元素组成,第二个新数组必须包含所有其他元素。
例如,原始数组包含["a","b","c","d","e","f","g","h"]
。我想创建两个新阵列:
first new array: ["a, "b", "c"];
second new array: ["d","e","f", "g","h"].
但是我的代码将原始数组划分了很多时间。为什么呢?
function MyCtrl($scope) {
$scope.strengthChartData = ["Banana", "Orange", "Apple", "Mango", "asd", "lol", "ahhhaha", "llllll", "ehhehehe", "oooo", "aaaaa", "bbbbbbbb"];
$scope.arrays = [];
var size = 3;
while ($scope.strengthChartData.length > 0)
$scope.arrays.push($scope.strengthChartData.splice(0, size));
}

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-controller="MyCtrl">
<h3>All elements:</h3>
<br>
<ul>
<li ng-repeat="array in arrays">{{array}}</li>
</ul>
<h3>First array:</h3>
<br>
<ul>
<li ng-repeat="array in arrays[0]">{{array}}</li>
</ul>
<h3>Second array:</h3>
<br>
<ul>
<li ng-repeat="array in arrays[1]">{{array}}</li>
</ul>
</div>
&#13;
答案 0 :(得分:3)
您可以使用 splice()
var arr = ["a", "b", "c", "d", "e", "f", "g", "h"],
arr1 = arr.splice(3);
document.write(JSON.stringify(arr) + '<br/>' + JSON.stringify(arr1));
&#13;
更新:如果您不想更新原始数组,那么
创建新数组并应用 splice()
或使用 slice()
仅使用 slice()
var arr = ["a", "b", "c", "d", "e", "f", "g", "h"],
arr1 = arr.slice(0, 3);
arr2 = arr1.slice(3);
document.write(JSON.stringify(arr) + '<br/>' +
JSON.stringify(arr1) + '<br/>' +
JSON.stringify(arr2));
&#13;
使用 splice()
和 slice()
,不带任何参数来复制所有元素
var arr = ["a", "b", "c", "d", "e", "f", "g", "h"],
arr1 = arr.slice();
arr2 = arr1.splice(3);
document.write(JSON.stringify(arr) + '<br/>' +
JSON.stringify(arr1) + '<br/>' +
JSON.stringify(arr2));
&#13;
答案 1 :(得分:1)
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", ... ]
答案 2 :(得分:0)
使用切片,例如:
mvn -Dstage=local process-resources
答案 3 :(得分:0)
至于原因:
strengthChartData
的长度为12.在您的同时,您正在推送arrays
变量3 strengthChartData
的第一个元素,并且您要将其从strengthChartData
中删除,因为splice修改了数组。
所以你的长度现在是3减去。当长度大于0时,你正在执行此操作,这意味着它将在长度为12,9,6,3时运行并且将在0处停止。因此,您实际上是从strengthChartData
推送前3个元素的四倍到array
变量