<!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>