JS学习笔记:一切都是True

该博客讨论了如何在JavaScript中检查集合中所有元素的特定属性是否为真值(truthy)。文章通过一道中级算法题举例,涉及对不同类型数据(如字符串、空字符串、布尔值、undefined和NaN)的判断。重点提到了NaN的特殊性及其判断方法。解题思路中强调了数据类型的准确判断,特别是对NaN的处理,并提供了通过的代码示例。最后,博客提醒读者要多学习、多练习和多提问,以提升编程技能。
摘要由CSDN通过智能技术生成

前言

提示:题目引用自:https://chinese.freecodecamp.org/(JS中级算法部分)


# 一、题目描述

检查谓词(第二个参数)在集合(第一个参数)的所有元素是否为 truthy。(此处省略N个字,详细题目描述请到网址中看吧)
简而言之:就是判断给定的属性的值,是否合法。

二、测试样例

选几个具有代表性的测试样例

  1. 测试string类型
    truthCheck([{“single”: “yes”}], “single”) 应返回 true。
  2. 测试空字符串 “”
    truthCheck([{“single”: “”}, {“single”: “double”}], “single”) 应返回 false。
  3. 测试布尔类型
    truthCheck([{“name”: “Pete”, “onBoat”: true}, {“name”: “Repeat”, “onBoat”: true}, {“name”: “FastForward”, “onBoat”: null}], “onBoat”) 应返回 false。
  4. 测试undefined类型
    truthCheck([{“user”: “Tinky-Winky”, “sex”: “male”}, {“user”: “Dipsy”}, {“user”: “Laa-Laa”, “sex”: “female”}, {“user”: “Po”, “sex”: “female”}], “sex”) 应返回 false
  5. 测试NaN类型
    truthCheck([{“single”: “double”}, {“single”: NaN}], “single”) 应返回 false。

三、通过代码

function truthCheck(collection, pre) {

  let sum = 0;
  for(let i=0;i<collection.length;i++){
      if(collection[i][pre]==undefined || collection[i][pre]=="" || Number.isNaN(collection[i][pre]) != false)//将不合法的数据排除掉,特别注意NaN类型
            continue;
      sum++;
  }

  if(sum!=collection.length)//将合法数据数量与总数量做对比
      return false;      
  return true;
}

truthCheck([{"single": ""}, {"single": "double"}], "single");

四、解题思路

  1. 本题的重点在于数据类型的判断,其中,NaN类型最为关键。

  2. NaN 属性用于引用特殊的非数字值。NaN 与所有值都不相等,包括它自己。

  3. NaN用typeof显示出的类型为number

  4. 判断NaN用Number.isNaN(数据)来判断,

提示:判断类型匹配这里有一个坑

var a = "a";
console.log(isNaN(a)); // true
// 字母a是 string类型,通过isNaN()判断错误


function test(n){
  if(typeof(n) === "number" && isNaN(n))   
      return true;    //双重判断
  return false;
}
console.log(test(a)); // false
// 通过修整判断正确

总结

多学,多练,多提问。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值