如何对对象数组进行排序和切片

时间:2015-08-03 01:16:35

标签: javascript arrays sorting javascript-objects

我有一系列镜头。我已经能够获取该数组并循环遍历它以获得在#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);
};

1 个答案:

答案 0 :(得分:1)

将所需的项目推送到数组中,然后对它们进行一次排序。我没有案例来测试代码。如果出现问题,你可以修改一下。

weak_ptr