Javascript 数组之判断取值和数组取值

题目一:var arr = [ '100px', 'abc'-6, [], -98765, 34, -2, 0, '300', , function(){alert(1);}, null, document, [], true, '200px'-30,'23.45元', 5, Number('abc'), function(){ alert(3); }, 'xyz'-90 ];

1、找到arr里所有的数字:-98765, 34, -2, 0, 5

2、找到可以转成数字的:'100px', -98765, 34, -2, 0, '300', '23.45元,5

3、把转成数字以后,最大值判断出来:300

4、把 NaN 所在的位置找出来:1 14 17 1

答:

1. 

function fn1(){
    for(var i=0;i<arr.length;i++){
     if(typeof arr[i] === 'number' &&  arr[i] === arr[i]){
         alert(arr[i]); //-98765, 34, -2, 0, 5 //arr[i] === arr[i] 排除NaN
    }
  }
}

fn1();

2.3.

var arr2 = [];
function fn1(){
    for(var i=0;i<arr.length;i++){
     if(!isNaN(parseInt(arr[i]))){
          arr2.push(arr[i]); //是数字的: 100px, -98765, 34, -2, 0, 300, 23.45元,  5 
     }
    }
}

fn1();

var tmp = arr2;
var max = tmp[0];

for(var i = 1;i < tmp.length;i++){
    if(max < tmp[i])
    {
        max = tmp[i];
    }  
}
alert(max);

4.

var arr3 = [];
function fn1(){
    for(var i=0;i<arr.length;i++){
       if(typeof arr[i] == 'number' && isNaN(Number(arr[i])))
        {
            arr3.push(i);
        }
    }
}
fn1();
alert(arr3);

 题目二:

请输入QQ号码:<input type="text" />
<input type="button" value="判断" />

<br />
1、有没有输入<br />
2、输入的是不是数字<br />
3、不能有0在前面<br />
4、不能是小数<br />
5、输入的数字必须在5位以上、10位以内<br />

答:

 window.onload = function(){
      var oInput = document.getElementsByTagName('input');
      oInput[1].onclick = function(){
         if(oInput[0].value  ==''){
            alert('没有输入值');
            oInput[0].focus();
            return false;
         }
         if(typeof(Number(oInput[0].value))  != 'number'){
            alert('不是数字');
            oInput[0].focus();
            return false;
         }
         if(parseInt(oInput[0].value) != parseFloat(oInput[0].value)){
            alert('不能是小数字');
            oInput[0].focus();
            return false;
         }
         if(oInput[0].value.length > 5 && oInput[0].value.length >= 10){
            alert('必须在5位以上、10位以内');
            oInput[0].focus();
            return false;
         }
         if(oInput[0].value != parseInt(oInput[0].value).toString() ){
            alert('不能有0在前面'); //字符转数字,再转回字符,自然会过滤掉0开头的部分 <!-- onkeyup="this.value=this.value.replace(/^([0]{1,})|D/g,'')"--> 
            oInput[0].focus();
            return false;
         }
      } 
   }
原文地址:https://www.cnblogs.com/allenhua/p/4102535.html