一道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, "300", "23.45元", 5
//3、把转换成数字以后,最大值判断出来:300
//4、把NaN所在的位置找出来:1, 14, 17, 19

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

//1、找到arr里所有的数字:-98765, 34, -2, 0, 5
var num1 =[];
for(var i = 0 ;i<arr.length; i++){
    //筛选出数字和能转换成数字的字符串
    var re = /^(-?)d+$/;  
    if(re.test(arr[i]) && typeof(arr[i]) != 'string'){
        num1.push(arr[i]);
    }
    
}
console.log(num1);

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

//2、找到可以转换成数字的:"100px", -98765, 34, -2, "300", "23.45元", 5
var num2=[];
for(var j =0; j<arr.length; j++){
    //parseInt解析一个字符串,并返回一个整数
    if(parseInt(arr[j])){
        num2.push(arr[j]);
    }
}
console.log(num2);

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

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

//假设最大值为数组的第一个元素,循环比对
var _max = num2[0];
for(var m=0; m<num2.length; m++){
    if(_max < num2[m] ){
        _max = num2[m];
    }
    
}
console.log(_max);

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

//4、把NaN所在的位置找出来:1, 14, 17, 19
var _index = [];
for(var n=0; n<arr.length; n++){
    if(Number.isNaN(arr[n])){
        _index.push(n);
    }
}
console.log(_index);

查了资料才完成的,不用忘得好快啊

原文地址:https://www.cnblogs.com/zhangans/p/6052562.html