每次测试的时候都要用alert ,弹的烦死了还得点击确定,才能继续测试
1 自己写一个写日志的函数以后测试直接用,当然也可以用 console.log("===自己喜好=");
/* * function 写日志的函数 * html 加载结束后在调用这个函数 即放到body下面 * 参数1 logStr 需要写的日志 * 参数2 id 写到什么地方 不写这个参数则打印到页面上 */ function writeData( logStr ,id ){ if(logStr==null || logStr=='' ) return ; var logObjId= id==null? "":id ; var logObj = document.getElementById(logObjId); //如果没有给出日志写到哪里则 logObj = logObj||document.getElementsByTagName('body')[0]; logObj.innerHTML = logObj.innerHTML + " "+logStr ; }
最近用数组的时候,发现Array的好多函数有的浏览器不兼容,
参考网上的函数弄来这些扩展函数个,以后就可以兼容使用。
2 indexOf
//item 需要循环的数组 index 从第几个开始循环 Array.prototype.indexOf=function(item, index) { var n = this.length, //判断空 i = index == null ? 0 : index ; //判断负数 i = i < 0 ? Math.max(0, n + i) : i; for (; i < n; i++) if (i in this && this[i] === item) return i; return -1 } var arrs = ["红",'绿' ,'蓝']; //测试代码 writeData( arrs.indexOf( "蓝" ,5) ,'colorpicker');
// 从数组中找会后一个匹配的内容
3 lastIndexOf函数
// item 需要循环的数组 index 从倒数第几个开始循环
Array.prototype.lastIndexOf = function(item, index) {
var n = this.length,
i = index == null ? n - 1 : index;
if (i < 0) i = Math.max(0, n + i);
for (; i >= 0; --i){
writeData( i + "== "+this[i] ,'colorpicker1');
if (i in this && this[i] === item) return i;
}
return -1
};
var arrs = ["红",'绿' ,'蓝',"红",'绿' ,'蓝'];
writeData( arrs.lastIndexOf( "红" , 2 ) ,'colorpicker1');
4 forEach 函数
/* * fn 回调函数 * thisObj 在那个对象上执行此函数,如果没有则window */ Array.prototype.forEach = function(fn, thisObj) { var scope = thisObj || window; for ( var i=0, j=this.length; i < j; ++i ) { //表示在当前这个窗口调用fn函数 给这个函数传 三个参数 fn.call(scope, this[i], i, this); } }; var arrs = ["红",'绿' ,'蓝']; //测试代码 arrs.forEach(function( b ,c,d ){ writeData( " " + b +" "+c +" ========= "+d+"<br>",'colorpicker') ; });
5 every 判断数组中每一个 数据 是否都符合 给定的函数
/* * fn 回调函数 * thisObj 在那个对象上执行此函数,如果没有则window */ Array.prototype.every = function(fn, thisObj) { var scope = thisObj || window; for ( var i=0, j=this.length; i < j; ++i ) { if ( !fn.call(scope, this[i], i, this) ) { return false; } } return true; }; //测试代码 var arrs =[45,67,88,92,71]; var pass = arrs.every(function( item , index ){ //item = parseInt( item ) ; if(item < 60 ){ return false; }else{ return true; } }); writeData( pass+"" ,'colorpicker');
6 数组中的数据 按照一定规则过滤然后返回新的数组
/* * fn 回调函数 * thisObj 在那个对象上执行此函数,如果没有则window * 功能: 遍历数组,把每一个执行的结果放到数组中 */ Array.prototype.map = function(fn, thisObj) { var scope = thisObj || window; var a = []; for ( var i=0, j=this.length; i < j; ++i ) { a.push(fn.call(scope, this[i], i, this)); } return a; }; //测试代码 把小于0的全都替换成0 var arrs =[45,67,88,92,-1]; var newArr = arrs.map(function(item, index ){ return Math.max(0,item); }); writeData( newArr+"" ,'colorpicker');
7 remove 删除指定的元素
/* * fn 回调函数 * 功能: 从数组中删除指定的元素 */ Array.prototype.remove = function(element) { for (var i = this.length; i >=0;i--) { if (element === this[i]) this.splice(i, 1); } return this; } //测试代码 删除元素 var arrs =[45,67,88,92,-1]; var newArr = arrs.remove( 88 );
8 unique 去除 一样的元素
/* * fn 回调函数 * thisObj 在那个对象上执行此函数,如果没有则window * 功能: 把重复的数据去掉 */ Array.prototype.unique=function(){ var ret = []; o:for(var i = 0, n = this.length; i < n; i++) { for(var x = i + 1 ; x < n; x++) { if(this[x] === this[i]) continue o; } ret.push(this[i]); } return ret; } //测试代码 把重复的数据去掉 var arrs =[45,67,88,92,78,45,45,'技术','技术']; //writeData( newArr+"" ,'colorpicker'); writeData( arrs.unique( ) +"" ,'colorpicker'); //另一种实现方式 function uniq(array){ var ret = [],ri = 0 array = array.sort(); ret[ri] = array[0]; for(var j = 1, n = array.length; j < n; j++){ if(ret[ri] !== array[j]){ ret[++ri] = array[j] } } return ret; }
9 最大值与最小值
一般写法
/* * fn 回调函数 * thisObj 在那个对象上执行此函数,如果没有则window * 功能: 取出数组中最大值 与 最小值 */ Array.prototype.max = function() { var max = this[0]; var len = this.length; for (var i = 1; i < len; i++){ if (this[i] > max) { max = this[i]; } } return max; } Array.prototype.min = function() { var min = this[0]; var len = this.length; for (var i = 1; i < len; i++){ if (this[i] < min){ min = this[i]; } } return min; } //避免其他类库中含有这个函数的扩展 if (typeof Array.prototype['max'] == 'undefined') { Array.prototype.max = function() { //************略************* } }
相关推荐
最近看了一下developer.mozilla.org里的东西,发现它为Array对象添加了不少generic method,赶得上Prototype的热心程度。
javascript string和array常用扩展方法
背景:JavaScript中Array对象的标准方法中,没有indexOf()方法,可通过下面的代码扩展。 代码如下: if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt) { var len = this.length >>> 0; var ...
javascript的Array没有contains方法,有时候这会不方便,contains方法实现很简单: 代码如下: function contains(a, obj) { var i = a.length; while (i–) { if (a[i] === obj) { return true; } } ...
de.js是一个轻量级的javascript扩展函数库,通过扩展页面元素的方法和属性、和扩展javascript内置类型的方法来帮助web前端开发人员实现更便捷和高效的编程。以下是主要特点: 支持类似jquery的选择器,同时支持类似...
今天重点讲下 如何给Array对象扩展 1、直接在Array.prototype 上扩展 2、用自己方法对数组对象进行扩展 直接在Array.prototype上扩展,不能直接对dom对象使用(如:document.getElementsByTagName(‘div’)得到的...
##Javascript 数组扩展 向 js 数组添加了一些函数 array.min() / array.max() :返回值数组的最小值/最大值 array.minBy(prop) / array.maxBy(prop) :返回具有属性prop的对象的最小值/最大值 array.toArray(prop) :...
IxJS, JavaScript的交互式扩展 JavaScript的交互式扩展( IxJS ) IxJS是一组库,用于组合同步和异步集合以及在JavaScript文档中使用 Array#extras 风格组合。JavaScript ( IxJS )的交互扩展将
一个 javascript 数组扩展库 演示 // Create a new empty list var list = new List ( ) ; // Create a new list based on an array var arr = [ 1 , 2 , 3 ] ; var list = new List ( arr ) ; // Add a value to ...
Array.prototype.del = function(n) { if (n<0 Array.prototype.random = function() u00a0 var nr=[], me>0) { nr[nr.length] = me[t = Math.floor(Math.random() * me.length)];
源文件程序天下JAVASCRIPT实例自学手册 第1章 JavaScript语言概述 1.1 JavaScript是什么 1.1.1 JavaScript简史 1.1.2 JavaScript有何特点 1.2 JavaScript能做什么 1.2.1 表单数据合法性验证 1.2.2 页面特效 1.2.3 ...
unwrapped.js 以性能为重点的简单Javascript DOM扩展和实用程序。 对于那些jQuery太多的时代。浏览器支持Chrome 42+ Firefox 38+ Internet Explorer 11+ Safari 8+辅助功能id ( id ) // returns Elementclasses ( ...
功能咖啡将Javascript Array扩展为功能性 ,因此您可以编写更多功能性的Coffeescript代码。原料药特性Array.prototype.head Array.prototype.init Array.prototype.isEmpty Array.prototype.last Array.prototype....
8.5 通过原型扩展对象 8.5.1 使用prototype属性为对象添加属性 8.5.2 原型查找链 8.5.3 使用原型为对象添加方法 8.5.4 所有对象都有的属性和方法 8.5.5 创建子类及继承 8.6 应知应...
JavaScript数组some()方法测试数组中的某个元素...这个方法是一个JavaScript扩展到ECMA-262标准; 因此它可能不存在在标准的其他实现。为了使它工作,你需要添加下面的脚本代码放到顶部: if (!Array.prototype.some
Meteor 的有用对象扩展 日期: Date.now() - 如果 Date 对象没有 now() 方法,则修复...someArray.inArray(needle, searchInKey, searchByKey) - 在 inArray 函数中扩展对象原型 someArray.diff(comparableArray) - 比