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 相关文章推荐
JavaScript 设计模式 富有表现力的Javascript(一)
May 26 Javascript
Jquery 表格合并的问题分享
Sep 17 Javascript
深入理解Javascript动态方法调用与参数修改的问题
Dec 10 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
Dec 29 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
js关于命名空间的函数实例
Feb 05 Javascript
js实现文本框宽度自适应文本宽度的方法
Aug 13 Javascript
jquery实现触发时更新下拉列表内容的方法
Dec 02 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
Vue keep-alive实践总结(推荐)
Aug 31 Javascript
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
微信小程序全选多选效果实现代码解析
Jan 21 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 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
php之可变函数的实例详解
2017/09/13 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
详解Django中的form库的使用
2015/07/18 Python
python学习之编写查询ip程序
2016/02/27 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python多线程获取返回值代码实例
2020/02/17 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
小学教师事迹材料
2014/01/13 职场文书
单位未婚证明范本
2014/01/18 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
商务日语专业自荐信
2014/04/17 职场文书
2015年大学生实习评语
2015/03/25 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers