数据筛选
分类: Javascript案列 2372 2
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];
用以上一组数据,来筛选分类出以下4类
1.所有的数字
2.可以转成数字的
3.最大值为
4.NaN所在的位置是
所有的数字
// 先声明一个空数组来存找到符合条件的数
let n1 = [];
// 既然要在数组里找符合条件的数,就可以先用循环把它遍历出来
for (let i = 0; i < arr.length; i++) {
// 然后用if去判断谁符合要求
// arr[i] 可以拿到循环里的当前的数值
// 判断它是不是数字
// 判断它是不是数字 typeof(arr[i]) == 'number'
if (typeof(arr[i]) == 'number') {
// 符合条件的数就写入创建的数组里
n1.push(arr[i]);
}
}
console.log(n1);
// NaN,-98765,34,-2,0,NaN,5,NaN,NaN
到这里,获取出来的数,不仅有数字,还有类型属于数字的(NaN),但我们这里要的是纯数字,而不是是个数字类型就获取
修改一下if判断把NaN剔除掉
// 先声明一个空数组来存找到符合条件的数
let n1 = [];
// 既然要在数组里找符合条件的数,就可以先用循环把它遍历出来
for (let i = 0; i < arr.length; i++) {
// 然后用if去判断谁符合要求
// arr[i] 可以拿到循环里的数
// 判断它是不是数字 并且 不是NaN
// 判断它是不是数字 typeof(arr[i]) == 'number'
// 判断它不是NaN
// NaN的判断方法 isNaN(arr[i),这样写只是判断它是个NaN,既然是要判断它不是NaN,可以用取反的方法!isNaN(arr[i)
// 判断数据类型是不是number 并且值不是NaN
if (typeof(arr[i]) == 'number' && !isNaN(arr[i])) {
// 符合条件的数就写入创建的数组里
n1.push(arr[i]);
}
}
console.log(n1);
// (5) [-98765, 34, -2, 0, 5]
可以转成数字的
let n2 = [];
for (let i = 0; i < arr.length; i++) {
// 先用parseFloat判断当前的数值可不可以转成数字 parseFloat(arr[i])
// 并且不是NaN就转 !isNaN()
// 判断这个数值可不可以通过parseFloat转成数字 - (不会出现NaN的情况)
if (!isNaN(parseFloat(arr[i]))) {
n2.push(arr[i]);
}
}
console.log(n2);
// (8) ["100px", -98765, 34, -2, 0, "300", "23.45元", 5]
最大值
// Infinity 正无穷 -Infinity 负无穷
// 先声明一个值,假设它是最大的,
// 注意一下不要用Infinity去做,这样的话,就真成最大的值了,应该用-Infinity,这样只要任何一个值超过这个-Infinity,变量max里的值就会呗替换
let max = -Infinity;
for (let i = 0; i < arr.length; i++) {
// 判断条件里不要直接用arr[i] 去比,因为arr[i]代表的是当前的数值,而数组里还有的不是数字,这样就没法用来做大小余判断了
if (Number(arr[i]) > max) {
max = arr[i];
}
}
console.log(max); //300
NaN的位置
let n4 = [];
for (let i = 0; i < arr.length; i++) {
// 如果只判断isNaN的话,而isNaN 内部 会先将值 通过number方法转成数字 再去执行
// 比如Number(function(){}) 用Number转一个函数出来的结果肯定是NaN,如果这是NaN,再用isNaN包起来的话,它不就是一个true
// 为了避免类似函数一类的东西放到里面去判断,就还需要一个只有是number类型的判断条件
// 判断数据通过isNaN方法得出布尔值 并且 数据类型必须是number(NaN也属于number)
if (isNaN(arr[i]) && typeof arr[i] == 'number') {
n4.push(i);
}
}
console.log(n4);
// (4) [1, 14, 17, 19]
共 2 条评论关于 “数据筛选”