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 this指针
Jul 30 Javascript
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
js验证模型自我实现的具体方法
Jun 21 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
Jan 31 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
Jun 01 Javascript
JS实现窗口加载时模拟鼠标移动的方法
Jun 03 Javascript
jquery判断至少有一个checkbox被选中的方法
Jun 05 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
Vue中fragment.js使用方法详解
Mar 09 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
django缓存配置的几种方法详解
2018/07/16 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
python实现文件的分割与合并
2019/08/29 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
给幼儿园老师的表扬信
2014/01/19 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
企业消防安全制度
2014/02/02 职场文书
《春笋》教学反思
2014/04/15 职场文书
好学生评语大全
2014/05/05 职场文书
Mysql中常用的join连接方式
2022/05/11 MySQL
SpringBoot Http远程调用的方法
2022/08/14 Java/Android