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 相关文章推荐
PJ Blog修改-禁止复制的代码和方法
Oct 25 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
Apr 17 Javascript
通过复制Table生成word和excel的javascript代码
Jan 20 Javascript
浅谈javascript获取元素transform参数
Jul 24 Javascript
JS实现超简单的鼠标拖动效果
Nov 02 Javascript
JavaScript中Array对象用法实例总结
Nov 29 Javascript
AngularJS路由实现页面跳转实例
Mar 03 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
Javascript获取某个月的天数
May 30 Javascript
vscode中eslint插件的配置(prettier配置无效)
Sep 10 Javascript
VUE.js实现动态设置输入框disabled属性
Oct 28 Javascript
js回调函数仿360开机
Dec 26 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 HTML代码串截取代码
2008/12/29 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
Prototype RegExp对象 学习
2009/07/19 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
jQuery 遍历map()方法详解
2016/11/04 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
通信工程求职信
2014/07/16 职场文书
不错的求职信范文
2014/07/20 职场文书
德能勤绩工作总结
2015/08/11 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
小学毕业教师寄语
2019/06/21 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server