<!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. rsync+inotify文件同步

    rsync+inotify文件同步 在服务器中,通常结合计划任务.shell脚本来执行本地备份.为了进一步提高备份的可靠性,使用异地备份也是非常重要的,利用rsync工具,可以实现快速.高效的异地备份 ...

  2. java keytool详解

    Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中. 在keystore里,包含两种数据:(1 ...

  3. Oracle12c中性能优化&amp;功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护

    Oracle 12c中,通过延迟相关索引的维护可以优化某些DROP和TRUNCATE分区命令的性能,同时,保持全局索引为有效. 1.   设置 下面的例子演示带全局索引的表创建和加载数据的过程. -- ...

  4. consumer发送请求,接收响应

    一般情况,consumer发送请求时,创建一个DefaultFuture对象,然后阻塞并等待响应.DefaultFuture类,封装了请求和响应: // 省略其他代码 public class Def ...

  5. vue-cli的安装及使用

    一.    node 和npm 1.在安装vue-cli前,要确认自己的电脑是否安装了node和npm 2.查询版本如下(vue脚手架支持node@4.xx以上) node -v    查询node版 ...

  6. docker官方windows安装

    https://docs.docker.com/engine/installation/windows/

  7. AnsiStartsStr 和 空字符串

    function AnsiStartsStr(const ASubText, AText: string): Boolean; begin Result := AnsiSameStr(ASubText ...

  8. struts2.1.6 action 01

    目录(?)[-] 安装与设置 HelloWorld 常见问题 Action   struts 官网下载 http://www.apache.org/ http://struts.apache.org/ ...

  9. 网络协议栈学习(一)socket通信实例

    网络协议栈学习(一)socket通信实例 该实例摘自<linux网络编程>(宋敬彬,孙海滨等著). 例子分为服务器端和客户端,客户端连接服务器后从标准输入读取输入的字符串,发送给服务器:服 ...

  10. Socket缓冲区

    1.由于可读状态是在对方写入数据后或socket关闭时才能出现,因此如果客户端和服务端都停留在read时,如果没有任何一方,向对方写入数据,这将会产生一个死锁. 2.此外,在本地接收操作发起之前,很可 ...