js这一坨代码有没有办法简化下,看着挺尴尬的

$scope.ezzh_qsw_lines = Math.ceil($scope.ezzh_qsw.length / $scope.cols);
                $scope.ezzh_zsw_lines = Math.ceil($scope.ezzh_zsw.length / $scope.cols);
                $scope.ezzh_hsw_lines = Math.ceil($scope.ezzh_hsw.length / $scope.cols);
                $scope.bsdw_qsw_lines = Math.ceil($scope.bsdw_qsw.length / $scope.cols);
                $scope.bsdw_zsw_lines = Math.ceil($scope.bsdw_zsw.length / $scope.cols);
                $scope.bsdw_hsw_lines = Math.ceil($scope.bsdw_hsw.length / $scope.cols);
                $scope.bgdw_qsw_lines = Math.ceil($scope.bgdw_qsw.length / $scope.cols);
                $scope.bgdw_zsw_lines = Math.ceil($scope.bgdw_zsw.length / $scope.cols);
                $scope.bgdw_hsw_lines = Math.ceil($scope.bgdw_hsw.length / $scope.cols);
                $scope.sgdw_qsw_lines = Math.ceil($scope.sgdw_qsw.length / $scope.cols);
                $scope.sgdw_zsw_lines = Math.ceil($scope.sgdw_zsw.length / $scope.cols);
                $scope.sgdw_hsw_lines = Math.ceil($scope.sgdw_hsw.length / $scope.cols);
                $scope.bghs_qsw_lines = Math.ceil($scope.bghs_qsw.length / $scope.cols);
                $scope.bghs_zsw_lines = Math.ceil($scope.bghs_zsw.length / $scope.cols);
                $scope.bghs_hsw_lines = Math.ceil($scope.bghs_hsw.length / $scope.cols);
                $scope.sghs_qsw_lines = Math.ceil($scope.sghs_qsw.length / $scope.cols);
                $scope.sghs_zsw_lines = Math.ceil($scope.sghs_zsw.length / $scope.cols);
                $scope.sghs_hsw_lines = Math.ceil($scope.sghs_hsw.length / $scope.cols);
阅读 2.8k
5 个回答

思路大概是这样子:

const cols = $scope.cols

let list = ['ezzh_zsw', 'ezzh_hsw'] // 这里的数组换成自己需要的
list.map(function (key) {
    $scope[key+'_lines'] = Math.ceil($scope[key].length / cols);
})
["ezzh_qsw", "ezzh_zsw", "ezzh_hsw", "bsdw_qsw", "bsdw_zsw", "bsdw_hsw", "bgdw_qsw", "bgdw_zsw", "bgdw_hsw", "sgdw_qsw", "sgdw_zsw", "sgdw_hsw", "bghs_qsw", "bghs_zsw", "bghs_hsw", "sghs_qsw", "sghs_zsw", "sghs_hsw"].map(function(item) {
    $scope[item + '_lines'] = ($scope[item].length / $scope.cols) >> 0;
})

$scope.ezzh_zsw_lines把.后的名字放在数组里循环获取,这样只需要写一个Math.ceil了

Object.keys($scope).map(function(key) {
//不要的属性判断一下……
  $scope[key + '_lines'] = Math.ceil($scope[key].length / $scope.cols);
});

重复的代码都是可以消除的,要写好代码,就是消除重复和提高表达力

一般你这种情况,写一个for循环,把不一样的参数提取到数组去读取即可

以上

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题