JS根据生日月份和日期计算星座的简单实现方法


Posted in Javascript onNovember 24, 2016

本文实例讲述了JS根据生日月份和日期计算星座的简单实现方法。分享给大家供大家参考,具体如下:

看到了别人写的一个计算星座的js,冗长的有点儿看不过去,就自己写个了。

我想,这个函数应该足够精简了:)

什么 if 啊 switch 啊 for 啊 通通滚蛋了……

传入参数:month [int] 1~12;  day [int] 1~31。

// 根据生日的月份和日期,计算星座。
function getAstro(month,day){
  var s="魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯";
  var arr=[20,19,21,21,21,22,23,23,23,23,22,22];
  return s.substr(month*2-(day<arr[month-1]?2:0),2);
}

如果你在网上搜“日期 星座 函数”,除了我的或转载我的代码之外,几乎都是长长的代码,恐怕不能找到比上面更简洁的代码了。

不过这上面3行代码仍然可以进一步精简,再来改进一下:

// 根据生日的月份和日期,计算星座。
function getAstro(m,d){
  return "魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯".substr(m*2-(d<"102223444433".charAt(m-1)- -19)*2,2);
}

是不是很酷呢,只有一行代码了,而且最大限度的精简了。

上面用到了一个substr函数和一个charAt函数,如果不考虑IE,那么.charAt(m-1)甚至可以精简为[m-1]

如果不需要输出星座名称而只需要星座数字索引,前面的字符串也可以省去,看起来就像这样:

// 根据生日的月份和日期,计算星座。
function getAstro(m,d){
  return m-(d<"102223444433".charAt(m-1)- -19);  //输出0~12的数字,0表示摩羯,1表示水瓶,依此类推,...,11是射手,12是摩羯。
}

下面写一段测试代码来验证:

// 根据生日的月份和日期,计算星座。
function getAstro(m,d){
  return "魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯".substr(m*2-(d<"102223444433".charAt(m-1)- -19)*2,2);
}
//下面写一个测试函数
function test(m,d){
document.writeln(m+"月"+d+"日 "+getAstro(m,d));
}
//测试
test(12,21); //输出: 12月21日 射手
test(12,22); //输出: 12月22日 魔羯
test(1,1);   //输出: 1月1日 魔羯
test(2,18);  //输出: 2月18日 水瓶
test(2,19);  //输出: 2月19日 双鱼

附十二星座日期对照:

魔羯座(12/22 - 1/19)、水瓶座(1/20 - 2/18)、双鱼座(2/19 - 3/20)、牡羊座(3/21 - 4/20)、
金牛座(4/21 - 5/20)、双子座(5/21 - 6/21)、巨蟹座(6/22 - 7/22)、狮子座(7/23 - 8/22)、
处女座(8/23 - 9/22)、天秤座(9/23 - 10/22)、天蝎座(10/23 - 11/21)、射手座(11/22 - 12/21)

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js 表单验证方法(实用)
Apr 28 Javascript
JS替换字符串中字符即替换全部而不是第一个
Jun 04 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
jquery if条件语句的写法
May 19 Javascript
关于微信中a链接无法跳转问题
Aug 02 Javascript
bootstrap PrintThis打印插件使用详解
Feb 20 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
js微信分享接口调用详解
Jul 23 Javascript
vue 实现根据data中的属性值来设置不同的样式
Aug 04 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 Javascript
使用javascript解析二维码的三种方式
Nov 11 Javascript
javascript简单进制转换实现方法
Nov 24 #Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
Nov 24 #Javascript
详解Node.js:events事件模块
Nov 24 #Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 #Javascript
微信小程序-消息提示框实例
Nov 24 #Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 #Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 #Javascript
You might like
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
PHP源码之explode使用说明
2011/08/05 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
python使用正则表达式提取网页URL的方法
2015/05/26 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
使用numba对Python运算加速的方法
2018/10/15 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
法律专业个人实习自我鉴定
2013/09/23 职场文书
水产养殖学应届生求职信
2013/09/29 职场文书
财务助理岗位职责
2013/11/10 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
世界环境日活动总结
2015/02/11 职场文书
商超业务员岗位职责
2015/02/13 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android
opencv检测动态物体的实现
2021/07/21 Python