<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
This is My haha!!
<input type="button" name="" value="test" onclick="count(0,15)">
<script>
/**
* 返回数组中索引
* @param arr
* @param item
* @returns {*}
*/
function indexOf(arr, item) {
if (Array.prototype.indexOf){
return arr.indexOf(item);
} else {
for (var i = 0; i < arr.length; i++){
if (arr[i] === item){
return i;
}
}
}
return -1;
} /**
* 删除元素,不动原来的数组
* @param arr
* @param item
*/
function remove(arr, item) { //声明一个新数组保存结果
var a = new Array();
//循环遍历
for(var i=0; i < arr.length; i++){
//如果arr[i]不等于item,就加入数组a
if(arr[i] != item){
a.push(arr[i]);
}
}
return a;
} /**
* 动原来的数组,删除item
* splice() 方法向/从数组中 添加/删除 项目,然后返回被删除的项目。
注释:该方法会改变原始数组。
* @param arr
* @param item
*/
function removeWithoutCopy(arr, item) { for(var i = 0; i < arr.length; i++){
if(arr[i] == item){
//splice方法会改变数组长度,当减掉一个元素后,后面的元素都会前移,因此需要相应减少i的值
arr.splice(i,1);//删除元素
i--;
}
}
return arr;
} /**
* 添加数组不 修改原来的数组
* @param arr
* @param item
* @returns {Blob|ArrayBuffer|Array.<T>|string}
*/
function append(arr, item) {
var arr1 = arr.slice(0);//复制数组
arr1.push(item);
return arr1;
}
/**
删除数组最后一个元素
*/
function truncate(arr) {
var New = arr.slice(0);//复制数组
New.splice(arr.length-1,1);
return New;
} /**
* 在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
* @param arr
* @param item
* @returns {Blob|ArrayBuffer|Array.<T>|string}
*/
function prepend(arr, item) {
var New = arr.slice(0);//复制数组
New.splice(0,0,item);
return New;
} /**
* 链接两个数组
* @param arr1
* @param arr2
* @returns {Array.<T>|string}
*/
function concat(arr1, arr2) {
return arr1.concat(arr2);
} /**
* 找出数组 arr 中重复出现过的元素,保存的时候看看b中有没有
* @param arr
*/
function duplicates(arr) {
var a=arr.sort(),b=[];
for(var i in a){
if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]);
}
return b;
}//先排序,如果后一个与前一个相等且未保存,则保存。
/**
* 为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
* @param arr
*/
function square(arr) {
/* var New = arr.slice(0);
for(var i=0;i<New.length;i++){
New[i] = New[i]*New[i];
}
return New;*/
/*map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。*/
return arr.map(function (item, index, array) {
return item*item;
});
} /**
* 在数组 arr 中,查找值与 item 相等的元素出现的所有位置
* @param arr
* @param target
* @returns {Array}
*/
function findAllOccurrences(arr, target) {
var New = [];
for(var i=0;i<arr.length;i++){
if(arr[i]==target){
New.push(arr[i]);
}
}
return New;
} function parse2Int(num) {
return parseInt(num,10);
}
//10进制 遇到不是 数字 直接 无视 function count(start, end) {
//立即输出第一个值
console.log(start++);
var timer = setInterval(function(){
if(start <= end){
console.log(start++);
}else{
clearInterval(timer);
}
},100);
//返回一个对象
return {
cancel : function(){
clearInterval(timer);
}
};
}
function fizzBuzz(num) {
if(num%3==0&&num%5==0){
return "fizzbuzz";
}else if(num%3==0){
return "fizz";
}else if(num%5==0){
return "buzz";
}else if(num == null || typeof num != "number"){//else if(num.isNaN()||num==""){
return false;
}else{
return num;
} } /**
* 函数调用
* @param fn
* @param arr
* @returns {*}
*/
function argsAsArray(fn, arr)
{
/*调用函数有3种方式:
obj.func();
func.call(obj,args);//参数列出
func.apply(obj,[m,n......]);//参数数组*/
return fn.apply(this,arr);
} /**
* 函数返回函数,函数作为参数传入
* @param str
* @returns {f}
*/
function functionFunction(str) {
var f = function(s){
return str+", "+s;
}
return f;
}
//前端我们还有很多不知道,比如 ----闭包
/**
* 创建对象
* @param str1
* @param str2
*/
function createModule(str1, str2) {
var obj = {
greeting:str1,
name:str2,
sayIt:function () {
//两个属性前面都需要加上this
return this.greeting+", "+this.name;
}
};
return obj;
} /**
*数字转字符串
* @param num
* @param bit
*/
function valueAtBit(num, bit) {
var s = num.toString(2);//数字 专为2进制字符串
return s[s.length - bit];
} /**
* 字符串转数字
* @param str
* @returns {Number}
*/
function base10(str) {
var result =parseInt(str,2);
return result;
} /**
* 将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位。
* @param num
*/
function convertToBinary(num) {
var str = num.toString(2);
var addLength = 8-str.length;
var str0 ="";
for(var i=0;i<addLength;i++){
str0+="0";
}
return str0+str;
}
/******正则表达式******/
/**
* 监测是否有数字
* @param str
* @returns {boolean}
*/
function containsNumber(str) {
var b = /\d/;
/// b.
return b.test(str);
} /**
* 给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
* @param str
* @returns {boolean}
*/
function containsRepeatingLetter(str) {// \1是分组
return /([a-zA-Z])\1/.test(str);
} /**
*首先确定元音集合[a,e,i,o,u],然后是以元音结尾,加上$,最后通配大小写,加上i。因此正则表达式为:/[a,e,i,o,u]$/i,最后用test方法去检测字符串str
* @param str
*/
function endsWithVowel(str) {
var reg = /[a,e,i,o,u]$/i;
return reg.test(str);
} /**
* XXX-XXX-XXXX
* @param str
* @returns {boolean}
*/
function matchesPattern(str) {
// var reg =/^\d{3}[-]\d{3}[-]\d{4}$/; 上面太笨了
var reg =/^(\d{3}-){2}\d{4}$/;
return reg.test(str);
}
function isUSD(str) {
//? 匹配前面元字符0次或1次
var reg = /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/;
return reg.test(str);
}
</script>
<script>
var arr = [1,3,4,9,8,3,1,8,8];
// alert(indexOf(arr,3));
// alert(remove(arr,3));
// alert(removeWithoutCopy(arr,3));
//alert(append(arr,4));
//alert(truncate(arr));
// alert(duplicates(arr));
// alert(square(arr));
var fn=function (greeting, name, punctuation)
{
return greeting + ', ' + name + (punctuation || '!');
}
arr = ['Hello', 'Ellie', '!'];//参数数组
// alert(argsAsArray(fn,arr));
//alert(createModule("111","222").sayIt());
//alert(valueAtBit(8,2));
//alert(convertToBinary(65));
alert(containsNumber("ac"));
</script>
</body>
</html>

自己一下午练习Js的代码的更多相关文章

  1. 网络问卷调查js实现代码

    昨天一个同行妹纸写了一个网络问卷调查的效果,但是有bug,于是就来问我该如何解决这个bug.经过我的分析,bug主要还是出在复选框的那部分,经过修改,bug问题解决,现在贴出如下代码,仅供大家参考: ...

  2. js原生代码实现轮播图案例

    一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...

  3. 在Sublime Text 3 中安装SublimeLinter,Node.js进行JS&CSS代码校验

    转载自:http://www.wiibil.com/website/sublimelinter-jshint-csslint.html 在Sublime Text中安装SublimeLinter,No ...

  4. 仿jQuery的siblings效果的js原生代码

    仿jQuery的siblings效果的js原生代码 <previousSibling> 属性返回选定节点的上一个同级节点(在相同树层级中的前一个节点). <nextSibling&g ...

  5. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码

    在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...

  6. 响应式js幻灯片代码一枚

    网站搭建经常会用到js幻灯片轮播,放上几张上档次的美图,为你的爱站增添大气元素.经常看到一些js幻灯片代码,但是感觉不是很美观,有的也不支持自适应缩放,也即是响应式,现在智能手机的普及以及移动浏览器技 ...

  7. ASP.Net MVC4中封装CSS和js冗余代码(不让其大篇的显示在前台上)

    (1)封装CSS和JS代码,使用调用的方式在前台进行调用.是开发看起来简洁和易于管理,可达到重用.   由于asp.netMVC4 框架 ,在封装js和CSS的时候,有如下规范: using Syst ...

  8. 使用正则表达式匹配JS函数代码

    使用正则表达式匹配JS函数代码 String someFunction="init"; Pattern regex = Pattern.compile("function ...

  9. JS倒计时 代码

    JS倒计时 代码 <div> <span id="KSD">3</span>天 <span id="KSH">1 ...

随机推荐

  1. 20170719xlVbaAbsorbProcedure

    Sub AbsorbThisProcedure() If Application.VBE.MainWindow.Visible = False Then MsgBox "请先激活VBE编辑窗 ...

  2. 3-11 《Ruby元编程》第4章block块 3-12

    第4章代码块blocks 基础知识 作用域:用代码块携带variables through scopes 通过传递block给instance_eval方法来控制作用域. 把block转换为Proc, ...

  3. 在 Confluence 6 中连接一个 LDAP 目录

    希望将 Confluence 连接到一个 LDAP 目录: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链接. 在左侧的面板中单击 用户目录(User Di ...

  4. Java compiler level does not match the version of the installed Java project facet.解决方法

    右键项目“Properties”,在弹出的“Properties”窗口左侧,单击“Project Facets”,打开“Project Facets”页面. 在页面中的“Java”下拉列表中,选择相应 ...

  5. 点击input文字会自动消失

    <input type="text" name="q" value="请输入关键字" style="width:128px; ...

  6. 自定义实现spark的分区函数

    有时自己的业务需要自己实现spark的分区函数 以下代码是实现一个自定义spark分区的demo 实现的功能是根据key值的最后一位数字,写到不同的文件 例如: 10写入到part-00000 11写 ...

  7. 重启oracle数据库的操作方法

    在实际的应用中,有时候工作数据库需要重新启动.本文介绍了一个特别实用的操作步骤,希望对大家有所帮助. 1. 停应用层的各种程序 2. 停Oralce的监听进程 $ lsnrctl stop 3. 在独 ...

  8. OPENSHIFT MYSQL使用Navicat远程连接

    1.安装OpenShift的一个叫RHC的远程管理客户端:https://developers.openshift.com/en/getting-started-windows.html 注意ruby ...

  9. [转载]JS浏览器兼容性问题

    from:http://dada-fangfang.iteye.com/blog/811749 做BS开发就难免会用到javascript,而每个浏览器对javascript的支持有不同.这就需要我们 ...

  10. C++ primer 第四版 练习3.13,3.14

    读一组整数到 vector 对象,计算并输出每对相邻元素的 和.如果读入元素个数为奇数,则提示用户后一个元素 没有求和,并输出其值. vector<int> ivec; int ival; ...