javascript - 这些重复的代码有没有办法简化下?js
黄舟
黄舟 2017-04-10 17:41:38
[JavaScript讨论组]
$scope.ezzh_qsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'QSW';
        });
        $scope.ezzh_zsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'ZSW';
        });
        $scope.ezzh_hsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'HSW';
        });
        $scope.bsdw_qsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'QSW';
        });
        $scope.bsdw_zsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'ZSW';
        });
        $scope.bsdw_hsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'HSW';
        });
        $scope.bgdw_qsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'QSW';
        });
        $scope.bgdw_zsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'ZSW';
        });
        $scope.bgdw_hsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'HSW';
        });
        $scope.sgdw_qsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'QSW';
        });
        $scope.sgdw_zsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'ZSW';
        });
        $scope.sgdw_hsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'HSW';
        });
        $scope.bghs_qsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'QSW';
        });
        $scope.bghs_zsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'ZSW';
        });
        $scope.bghs_hsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'HSW';
        });
        $scope.sghs_qsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'QSW';
        });
        $scope.sghs_zsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'ZSW';
        });
        $scope.sghs_hsw = $scope.pls.filter(function(item, index) {
          return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == 'HSW';
        });
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(5)
伊谢尔伦
    var filter = function(text){
        return function(item, index) {
              return item.id.split('-')[1] == 'EZZH' && item.id.split('-')[2] == text;
            }
    }
    
    // 使用
    $scope.sghs_hsw = $scope.pls.filter(filter("HSW"))

还有更简洁的. 结合上面的:

var map = {
    sghs_hsw:'HSW',
    sghs_qsw :'QSW',
    /// 省略其它的
}
_.each(map,function(v,k){
    $scope[k] = $scope.pls.filter(filter(v))
})
伊谢尔伦
$scope.result = {};

$scope.pls.forEach(function(item) {
  var idArr = item.id.split('-');

  var key = idArr[1].toLowerCase() + '_' + idArr[2].toLowerCase();
  if (!$scope.result[key]) {
    $scope.result[key] = [];
  } else {
    $scope.result[key].push(item);
  }
});
大家讲道理

我这个也凑合用吧^^

const keys = ['EZZH', 'BSDW', 'SGDW', 'BGHS', 'SGHS'];

const values = ['QSW', 'ZSW', 'HSW', 'QSW'];


keys
    .forEach(k => {
        values.forEach(v => {
            $scope[`${k.toLowerCase()}_${v.toLowerCase()}`] = $scope.pls.filter(item => {
                return item.id.split('-')[1] === k && item.id.split('-')[2] === v;
            });
        });
    });

console.log($scope);
PHPz

一千变量一千filter,一个for循环搞定的事儿

伊谢尔伦

各位都是高手啊

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号