例如:日期:2017年5月1日 9:3:1 ; 将它转换成20170501090301的时间格式;面试题大概是这个意思,原文意思很模糊,经面试官解释为如上意思。主要卡壳地方为日与小时之间有个空格如何去掉,想使用将字符串转换成数组除去数组中的空元素,但是转换成数组后除去数组中空元素有一定难度,在网上找的判断方法都是如果数组中的空元素==undefined , 则为空元素。这个方法一般情况下是好使的,但是此时的情况空元素其实是空格字符串,判断方法使用charCodeAt == 32(32为空格的unicode编码)
具体代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function () {
var oDate1 = document.getElementById('date1');
var oDate2 = document.getElementById('date2');
str = '2017年5月1日 9:3:1';
//将字符串转换成数组
var arr1 = str.split("");
var arr2 = [];
//除去字符串中的空元素。由于将字符串转换成数组,数组中每个元素包括空格在内都是长度为1的字符串。这就造成了如果用 undefined 作为判断条件的话,判断结果为false 。 所以只能用字符的 Unicode 编码值做判断。
for ( var i = 0 ; i < arr1.length; i++ ) {
if (arr1[i].charCodeAt(0) == 32) {
arr1.splice(i,1);
}
}
//将月日时分秒为一位的补零,判断依据是年月日,冒号,无法转换成数字
for ( var i = 0 ; i < arr1.length; i++ ) {
if (isNaN(Number(arr1[i])) && isNaN(Number(arr1[i+2]))) {
arr1.splice(i+1,0,0);
}
}
//去除掉年月日,冒号,判断依据是年月日,冒号,无法转换成数字
for ( var i = 0 ; i < arr1.length ; i++ ) {
if (isNaN(Number(arr1[i]))) {
arr1.splice(i,1)
}
}
var arr3 = arr1.join("");
oDate2.innerHTML = arr3;
oDate1.innerHTML = str;
}
</script>
</head>
<body>
<h2 id="date1"></h2>
<h2 id="date2"></h2>
</body>
</html>