作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一系列镜头。我已经能够获取该数组并循环遍历它以获取第 1 洞发生的所有击球,然后根据“shot_number”按顺序重新排列它们。我现在需要对每个孔执行此操作,并为每个孔创建一个数组(例如:holeArray1、holeArray2)。我尝试了多种解决方案来增加 x,但如果我这样做,我最终会错过某些球洞上发生的一些镜头。
如何重构此函数来为每个孔创建此数组,而无需自己复制和粘贴代码并更改变量 x ?感谢您的帮助。我知道我应该能够解决这个问题,但我正在努力。
$scope.createHoleShotsArrays = function () {
var i = 0;
var x = 1;
var holeArray = [];
var len = $scope.shots.length;
for (; i < len; i++) {
if ($scope.shots[i].attributes.hole == x) {
holeArray.push($scope.shots[i]);
holeArray.sort(function (a, b) {
if (a.attributes.shot_number > b.attributes.shot_number) {
return 1;
}
if (a.attributes.shot_number < b.attributes.shot_number) {
return -1;
}
// a must be equal to b
return 0;
});
}
}
console.log(holeArray);
};
最佳答案
将想要的项目放入数组中,然后对它们进行一次排序。我没有案例来测试代码。如果有问题你可以稍微修改一下。
$scope.createHoleShotsArrays = function() {
var holeArrays = [];
$scope.shots.forEach(function(shot) {
if (holeArrays.length < shot.attributes.hole) {
holeArrays[shot.attributes.hole - 1] = [];
}
holeArrays[shot.attributes.hole - 1].push(shot);
});
holeArrays.forEach(function(arr) {
arr.sort(function(a, b) {
return a.attributes.shot_number - b.attributes.shot_number;
});
});
console.log(holeArrays);
};
关于javascript - 如何对对象数组进行排序和切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31778190/
我是一名优秀的程序员,十分优秀!