版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1. 写个JavaScript函数来判断是否大于18岁,比如传入1993-6-3,返回true,传递2001-6-3返回false;
<script>
/*分割时间字符串*/
function dateFormat(date){
var dateArr = date.split('-');
return dateArr;
}
/*补0操作*/
function zeroFormat(date){
return date>10?date:'0'+date;
}
/*判断是否大于18*/
function isYear(year){
var currentDate = new Date();
var flagDate = dateFormat(year);
var currentYear = currentDate.getFullYear();
var currentMon = zeroFormat(currentDate.getMonth()+1);
var currentDay = zeroFormat(currentDate.getDate());
var flagYear = flagDate[0];
var flagMon = flagDate[1];
var flagDay = flagDate[2];
if(currentYear-flagYear>18){
return true;
}else if(currentYear-flagYear===18&¤tMon>flagMon){
return true;
}else if(currentYear-flagYear===18&¤tMon===flagMon&¤tDay>flagDay){
return true;
}else{
return false;
}
}
console.log(isYear('2000-01-05'));
console.log(isYear('1999-02-14'));
console.log(isYear('1999-02-13'));
console.log(isYear('1989-12-26'));
</script>
2. 输入一个大于0的数,并求其二进制中1的个数;
1).用1和n进行位运算,结果为1, 则n的二进制最右边一位为1,否则为0;
2).将n二进制形式右移1位,继续与1进行位运算;
3).由于负数右移时最高位补1,因此不能采用算术右移,而使用不考虑符号位的逻辑右移。
<script>
function numberOf(n){
var count=0;
while(n!=0){
if((n&1)==1){
count++;
}
n = n>>>1;
}
return count;
}
</script>
3. 给定一个整数的数组,找出其中的pair(a,b),使得a+b=0, 并返回这样的pair数目,(a,b)和(b,a)是同一组。
如:输入[-1,2,4,5,-2],输出1
<script>
var arr = [-1, 2, 4, 5, -2,-2,2];
var count =0;
var newarr=[];
arr = Array.from(new Set(arr));
console.log(arr);
for(var i=0;i<arr.length;i++){
newarr.push(Math.abs(arr[i]));
}
console.log(newarr);
for(var i=0;i<newarr.length-1;i++){
for(var j=i+1;j<newarr.length;j++){
if(newarr.indexOf(newarr[i])!=-1&&newarr[i]==newarr[j]){
count++;
break;
}
}
}
console.log(count);
</script>