1. 程式人生 > >JS 實現:駝峰式轉下換線

JS 實現:駝峰式轉下換線

方法一:用 map 方法實現

function upperCaseToUnderLine(val, index, arr){
	if(/[A-Z]/.test(val)){
		if(index===0){
			return val.toLowerCase();
		}else{
			return '_'+val.toLowerCase();
		}
	}else{
		return val;
	}
}
function toUnderline(arr){
	if(typeof arr === 'string'){
		return [].map.call(arr,upperCaseToUnderLine).join('');
		// Array.prototype.map.call(arr, upperCaseToUnderLine).join('');
	}else{
		return arr.map(upperCaseToUnderLine).join('');
	}
}
var a = 'AppModuleName';
var res1 = [].map.call(a,upperCaseToUnderLine).join('');    //app_module_name
var res2 = toUnderline(a);    //app_module_name

方法二:用 reduce 方法實現

function upperCaseToUnderLine(previousValue, currentValue, currentIndex, array){
	if(/[A-Z]/.test(currentValue)){
		currentValue = currentValue.toLowerCase();
		if(currentIndex===0){
			return previousValue + currentValue;
		}else{
			return previousValue + '_' + currentValue;
		}
	}else{
		return previousValue + currentValue;
	}
}
function toUnderLine(arr){
	if(typeof arr === 'string'){
		arr = arr.split('');
	}
	return arr.reduce(upperCaseToUnderLine,'');
}
var a = 'AppName';
var res1 = toUnderLine(a);	//app_name
var res2 = [].reduce.call(a,upperCaseToUnderLine,'');	//app_name