一道面试题,如何判断一个对象中有汉字,数字,大写字母,小写字母?

var obj ={v1:"汉字",v2:"A",v3:"a",v4:1};

当时用原生Js没做出来,请问有什么更好的方法吗?

阅读 2.6k
1 个回答

首先,这语法就不对,JavaScript 里没有这种语法,要么是数组语法 var obj =["汉字","A","a",1];,要么是对象语法 var obj ={v1: "汉字", v2: "A", v3: "a", v4: 1};

判断汉字、数字、大小写字母都可以用正则表达式完成,当然对于数字,可能还需要先进行类型判断

  • 汉字:/[\u4E00-\u9FA5]/,全汉字 /^[\u4E00-\u9FA5]+$/
  • 大写字母:/[A-Z]/,全大写 /^[A-Z]+$/
  • 小字字母类似
  • 数字类似

判断数字类型

function isNumber(v) {
    switch(typeof(v)) {
        case "number":
            return !isNaN(v)
        case "string":
            return /^\d+$/.test(v);
        default:
            return false;
    }
}

如果 obj 是一个数组,通过循环就就可以依次判断即可。如果 obj 是一个对象,使用 Object.keys(obj),取得所有键,再按键获取值依次判断即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题