每次测试的时候都要用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() { //************略************* } }
相关推荐
在JavaScript中,Array对象是处理数组数据的关键部分,而Array扩展则是为了让开发者能够更加方便地操作数组,提供了许多实用的方法。在本文中,我们将探讨几个常见的JavaScript Array扩展,包括`indexOf`、`...
javascript string和array常用扩展方法
`array.js` 文件可能包含了对数组操作的一些自定义函数或者扩展,例如可能实现了数组去重、查找指定元素的索引、排序等功能。这些功能可以通过阅读源码来了解其具体的实现方式和用途。 接着,Map是ES6中新增的一种...
背景:JavaScript中Array对象的标准方法中,没有indexOf()方法,可通过下面的代码扩展。 代码如下: if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt) { var len = this.length >>> 0; var ...
本文将详细介绍JavaScript数组的基本功能及其一些有用的扩展用法。 #### 数组的概念 数组本质上是一系列变量的有序集合。通过使用数组,可以替代传统的声明多个单独变量的方式,使得代码更加简洁易读。例如: ```...
javascript的Array没有contains方法,有时候这会不方便,contains方法实现很简单: 代码如下: function contains(a, obj) { var i = a.length; while (i–) { if (a[i] === obj) { return true; } } ...
在JavaScript编程中,Array和Map是两种非常重要的数据结构,它们各自有其独特的作用和应用场景。Array主要用于存储一组有序的元素,而Map则提供了一种键值对的存储方式,适用于关联不同类型的值。 Array(数组)是...
标题提到的“javascript Array数组对象的扩展函数代码”就是关于如何给Array对象添加额外的方法,以实现更便捷的操作。描述中提到了“去除字符串空格”和“数组排序”,这些都是常见的数组操作。 首先,我们来讨论...
在JavaScript中,有许多内置对象如Array、Date和String等,它们提供了JavaScript的强大功能。在WebKit的源代码中,这些内置对象对应着不同的_Object.cpp文件,例如Math对应Math-Object.cpp,String对应String-Object...
de.js是一个轻量级的javascript扩展函数库,通过扩展页面元素的方法和属性、和扩展javascript内置类型的方法来帮助web前端开发人员实现更便捷和高效的编程。以下是主要特点: 支持类似jquery的选择器,同时支持类似...
本文将详细介绍Array原型上的方法,并探讨如何将这些方法应用于普通的JavaScript对象(Object),以此扩展对象的功能,使其具备类似于数组的行为特性。 #### 二、Array 原型方法概述 ##### 2.1 `push` `Array....
2. `prototype`属性:这是所有JavaScript对象都具有的属性,用于扩展对象的方法。例如,你可以通过`Array.prototype`自定义一个方法,使得所有的数组实例都能使用这个新方法。以下是一个示例,定义了一个名为`outAll...
JavaScript中的数组Array是编程中非常基础且重要的数据结构,它用于存储一组有序的元素,可以是任意类型。本文主要探讨JavaScript数组的两个关键属性:`length`和`prototype`。 首先,`length`属性是每个JavaScript...
##Javascript 数组扩展 向 js 数组添加了一些函数 array.min() / array.max() :返回值数组的最小值/最大值 array.minBy(prop) / array.maxBy(prop) :返回具有属性prop的对象的最小值/最大值 array.toArray(prop) :...
JavaScript中的Array对象是用于存储有序数据的集合,它允许我们以灵活的方式处理一系列的数据项。在JavaScript中,数组可以包含任何类型的数据,包括数字、字符串甚至是其他对象。本篇文章将详细探讨JavaScript ...
### JavaScript Prototype 对象扩展 #### 一、简介与背景 在JavaScript中,`prototype`是一个非常重要的概念,尤其是在面向对象编程(OOP)方面。通过利用`prototype`,开发者能够更高效地管理对象间的共享属性和...