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 相关文章推荐
用document.documentElement取代document.body的原因分析
Nov 12 Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
Apr 22 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
Nov 06 Javascript
html+js实现简单的计算器代码(加减乘除)
Jul 12 Javascript
Angularjs的ng-repeat中去除重复数据的方法
Aug 05 Javascript
jQuery异步提交表单的两种方式
Sep 13 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 Javascript
jquery拖动改变div大小
Jul 04 jQuery
解决Vue2.0中使用less给元素添加背景图片出现的问题
Sep 03 Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 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 Static关键字实用方法
2010/06/04 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
永不消失的title提示代码
2007/02/15 Javascript
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
深入探究node之Transform
2017/07/20 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python callable()函数用法实例分析
2018/03/17 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python中强大的format函数实例详解
2018/12/05 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
口才训练演讲稿范文
2014/09/16 职场文书
出差报告怎么写
2014/11/06 职场文书
留学推荐信英文范文
2015/03/26 职场文书