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 图片缩放(按比例)控制代码
May 27 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
用js获取电脑信息(是使用与IE浏览器)
Jan 15 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
Mar 04 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
May 04 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
Sep 19 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
详解Node 定时器
Feb 26 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
element tree树形组件回显数据问题解决
Aug 14 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(3)
2006/10/09 PHP
PHP图片上传代码
2013/11/04 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
Tensorflow之Saver的用法详解
2018/04/23 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python使用udp实现聊天器功能
2018/12/10 Python
基于python历史天气采集的分析
2019/02/14 Python
python正则-re的用法详解
2019/07/28 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
专升本个人自我评价
2013/12/22 职场文书
文秘大学生求职信
2014/02/25 职场文书
大课间体育活动方案
2014/03/12 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
小学生思想品德评语
2014/12/31 职场文书
上班迟到检讨书
2015/05/06 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android