所以,我跟随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');
}
在这里,唯一改变的是名称和号码。
我很难想出一个重用这样重复代码的功能。
有人可以帮我找到一个简单重复相同代码的功能吗?
由于
答案 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');