js写一个重复代码的功能

时间:2016-02-25 08:29:00

标签: javascript function

所以,我跟随js:

}else if (name== pac + 'steve/'){
    var cat_id = '42';
    CAT_L('steve');
}else if (curret_url == pac + 'mike/'){
    var cat_id = '43';
    CAT_L('mike');
}else if (curret_url == pac + 'sean/'){
    var cat_id = '44';
    CAT_L('sean');
}

在这里,唯一改变的是名称和号码。

我很难想出一个重用这样重复代码的功能。

有人可以帮我找到一个简单重复相同代码的功能吗?

由于

3 个答案:

答案 0 :(得分:3)

你可以这样做:

var valMap = {
  'steve': '42',
  'mike':'43',
  'sean': '44'
};

var name = curret_url.slice(pac.length);
cat_id = valMap[name];
CAT_L(name);

答案 1 :(得分:2)

您可以使用正则表达式来提取名称: -

var curret_url = "/foomike/"

var obj = {
  steve: '42',
  mike: '43',
  sean: '44'
};

var val = /\/foo(\w+)/.exec(curret_url); // pac=/foo

if (val.length && obj.hasOwnProperty(val[1])) {
  var cat_id = obj[val[1]];
  alert(val[1]);
  alert(cat_id);
}

答案 2 :(得分:0)

所有出色的解决方案,这是我更长的通用方式......:)

var pac = "",
    CAT_L = function(){};

function Record(pac, config, callback) {

    var key;
    for (key in config) {
        this[pac + key] = (function(key) {
                return function() {
                    return callback.call(this, key, config[key]);
                }
            })(key);
    }

    return this;

};

Record.prototype.get = function(key) {
    return valMap[key].call(this);
}

valMap = new Record(pac, {
  'steve': '42',
  'mike':'43',
  'sean': '44'

}, function(key, val) {
    cat_id = val;
    CAT_L(key);
});


valMap.get(pac + 'steve');