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 相关文章推荐
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
Nov 14 Javascript
js返回上一页并刷新代码整理
Dec 21 Javascript
关于JavaScript与HTML的交互事件
Apr 12 Javascript
JQuery AJAX 中文乱码问题解决
Jun 05 Javascript
JS中typeof与instanceof之间的区别总结
Nov 14 Javascript
深入理解JSON数据源格式
Jan 10 Javascript
jQuery 文本框得失焦点的简单实例
Feb 19 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
JavaScript中使用Math.PI圆周率属性的方法
Jun 14 Javascript
javascript表单验证大全
Aug 12 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
Nuxt的路由动画效果案例
Nov 06 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更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php创建多级目录的方法
2015/03/24 PHP
php常用的工具开发整理
2019/09/26 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
javascript 写类方式之八
2009/07/05 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
python 默认参数问题的陷阱
2016/02/29 Python
对python 调用类属性的方法详解
2019/07/02 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
餐饮主管岗位职责
2013/12/10 职场文书
食品安全宣传标语
2014/06/07 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
2015年体育部工作总结
2015/04/02 职场文书
小爸爸观后感
2015/06/15 职场文书