我有一个包含 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>
最佳答案
您可以使用splice()
为此
var arr = ["a", "b", "c", "d", "e", "f", "g", "h"],
arr1 = arr.splice(3);
document.write(JSON.stringify(arr) + '<br/>' + JSON.stringify(arr1));
更新:如果您不想更新原始数组,则
创建新数组并应用 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));
使用 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));
关于javascript - 在Javascript中将数组分为两部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36310578/