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 相关文章推荐
新浪刚打开页面出来的全屏广告代码
Apr 02 Javascript
javascript获取当前ip的代码
May 10 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
Jul 29 Javascript
JQuery文本框高亮显示插件代码
Apr 02 Javascript
用js正确判断用户名cookie是否存在的方法
Jan 28 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
Nov 05 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
Jul 19 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
网络资源
2006/10/09 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
浅析python内置模块collections
2019/11/15 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
英文简历中的自我评价
2013/10/06 职场文书
购房意向书
2014/04/01 职场文书
关于安全演讲稿
2014/05/09 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
企业2014年度工作总结
2014/12/10 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
Python学习之异常中的finally使用详解
2022/03/16 Python