Array的一些方法:
//ECMA-262 3rd. Edition
function Array(){};
Array.prototype = new Object();
Array.prototype.length = 1;
Array.prototype.concat = function(args){return [];};
Array.prototype.join = function(seperator){return [];};
Array.prototype.pop = function(){return new Object();};
Array.prototype.push = function(args){};
Array.prototype.reverse = function(){return [];};
Array.prototype.shift = function(){return new Object();};
Array.prototype.slice = function(start, end){return [];};
Array.prototype.sort = function(funct){return [];};
Array.prototype.splice = function(start, deletecount, items){return [];};
Array.prototype.unshift = function(start){return [];};
一切从声明一个数组开始:
var arr1 = new Array();
var arr2 = new Array(4);//长度为4的数组
var arr3 = new Array("nico", "a", 4);
var arr4 = [ "nico", "a", 4.5, true ];
Array与String
1、toString()和valueOf()用逗号将数组连接在一起
arr4.toString() //nico,a,4.5,true
2、join接受一个参数,将数组用其拼接成字符串
console.log(arr4.join(",")); //nico,a,4.5,true
console.log(arr4.join("-")); //nico-a-4.5-true
3、split()则是将字符串分割成一个数组
var arr = "nico,a,4.5,true".split(",");
console.log(arr.constructor == Array);
console.log("red".split(""));
Array新增
1、数组新增有几个方法,当然最直接的是在数组下标赋值:
var arr = [ "nico", "a", 4.5, true ];
arr[arr.length] = "b";
arr[arr.length] = "c";
console.log(arr.toString()); //nico,a,4.5,true,b,c
2、push是向array末尾新增元素,接受一个数组或普通对象
var arr = [ "nico", "a", 4.5, true ];
arr.push("b");
console.log(arr.toString()); //nico,a,4.5,true,b
arr.push([1,2,"b"]);
console.log(arr.toString()); //nico,a,4.5,true,1,2,b
3、concat也可以接受数组或普通对象,但是不会修改原有的数组,需要返回一个新的数组
var arr = [ "nico", "a", 4.5, true ];
arr.concat("a");
console.log(arr.toString()); //nico,a,4.5,true
var arr1 = arr.concat(["a", 2]);
console.log(arr1.toString()); //nico,a,4.5,true,a,2
Array删除
1、pop是对数组最后一个元素
var arr = [ "nico", "a", 4.5, true ];
arr.pop();
console.log(arr.toString()); //nico,a,4.5
与之对应的是shift,他返回数组的第一个元素,并修改原数组
var arr = [ "nico", "a", 4.5, true ];
arr.shift();
console.log(arr.toString());//a,4.5,true
注意unshift则是向向数组的开头添加一个或更多元素,并返回新的长度。
2、当然也可以使用delete。delete是javascript里面的一元运算符,主要删除对象的属性或方法的引用。但是会有一个问题,就是数组长度不会改变,只是将该数组位置的元素引用删除,置为undefined
var arr = [ "nico", "a", 4.5, true ];
delete arr[0];
console.log(arr[0]);//undefined
console.log(arr.toString());//,a,4.5,true
3、这样在实际的使用中肯定是不太符合一般的习惯,我们通过下标删除数组元素,当然期望长度也发生改变,这里是网上找到的一个根据下标删除的例子:
/**
* 根据下标删除数组:
* 正数下标从左往右,以0开始
* 负数下标从右往左,以-1开始,超过长度的下标默认删除第一个元素
*/
Array.prototype.remove = function(index) {
if (isNaN(index) || index > this.length) {
return false;
}
return this.splice(index, 1);
};
测试代码:
var arr = [ "nico", "a", 4.5, true ];
arr.remove(0);
console.log(arr.toString());// nico,4.5,true
arr.remove(-4);
console.log(arr.toString());// a,4.5,true
arr.remove(-6);
console.log(arr.toString());// a,4.5,true
4、这里用到splice()方法,用来删除、插入、替换数组的元素
/**
* function splice(start, deletecount, items)
* @param {Number} start 开始删除的下标
* @param {Number} deletecount 删除的个数
* @param {Array} items 用这些数组来替换被删除的元素
* @returns {Array}
* @memberOf Array
* @see Array
* @since Standard ECMA-262 3rd. Edition
* @since Level 2 Document Object Model Core Definition.
*/
Array.prototype.splice = function(start, deletecount, items){return [];};
如下:
var arr = [ "nico", "a", 4.5, true ];
arr.splice(0, 1, "z");
console.log(arr.toString());// z,a,4.5,true
arr.splice(1, 1, [ 1, 2 ]);
console.log(arr.toString());// nico,1,2,4.5,true
用这个特性,我们可以实现在数组制定位置插入一条或多条数据:
Array.prototype.insert = function(index, obj) {
return this.splice(index, 0, obj);
};
var arr = [ "nico", "a", 4.5, true ];
arr.insert(1, ["1","2"]);
console.log(arr.toString());//nico,1,2,a,4.5,true
5、同样,这里有一个截取数组的函数slice(startNum, endNum)他接受两个起止位置的下标,不修改原数组,返回一个数组。当然,下标也可以是负数,表示从后开始
var arr = [ "nico", "a", 4.5, true ];
arr.slice(1, 2);
console.log(arr.toString());// nico,a,4.5,true
var arr1 = arr.slice(1, 6);
console.log(arr1.toString());// a,4.5,true
6、继续说删除,当然也可以提供根据值来删除:
Array.prototype.remove = function(obj) {
for ( var i = 0, j = this.length; i < j; i++) {
if (this[i] === obj) {
this.splice(i, 1);
}
}
};
var arr = [ "nico", "a", 4.5, true ];
arr.remove("a");
console.log(arr.toString());// nico,4.5,true
几个函数
1、sort用于对数组的元素进行排序,接受一个可选的函数作为排序的规则。而默认是按照数组内元素的字符编码顺序排序。
var arr = [ "nico", "a", 4.5, true ];
arr.sort();
console.log(arr.toString());// 4.5,a,nico,true
var arr = [ 1, 2.3, -3, 34 ];
arr.sort(function(a, b) {
return a - b;
});
console.log(arr.toString());// -3,1,2.3,34
2、取最大值与最小值
//John Resig是把它们做成Math对象的静态方法
Array.prototype.max = function() {
return Math.max.apply({}, this);
};
Array.prototype.min = function() {
return Math.min.apply({}, this);
};
var arr = [ 1, 2.3, -3, 34 ];
console.log(arr.max());// 34
console.log(arr.min());// -3
3、contains
Array.prototype.contains = function(obj) {
for ( var i = 0, j = this.length; i < j; i++) {
if (this[i] === obj) {
return true;
}
}
return false;
};
var arr = [ "nico", "a", 4.5, true ];
console.log(arr.contains("a"));// true
console.log(arr.contains(2));// false
分享到:
相关推荐
学生信息管理系统-----------无数据库版本。资源来源于网络分享,如有侵权请告知!
2024年福建省村级(居委会)行政区划shp数据集 坐标系:WGS1984
win32汇编环境,对话框中显示bmp图像文件
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
电动汽车动力系统匹配计算模型:输入整车参数及性能要求,一键生成驱动系统的扭矩功率峰值转速等参数。 2、整车动力经济性计算模型:包含NEDC WLTC CLTC工况,输入整车参数可生成工况电耗、百公里电耗、匀速工况续航、百公里电耗等信息。 实际项目中使用的计算仿真模型.
2020CCF下降2020 CCF大数据与计算智能大赛-非结构化商业文本信息中隐私信息识别-第7名方案bert base + flat + crf + fgm + swa + pu learning策略 + clue数据集 = test1单模0.906词向量https://github.com/Embedding/Chinese-Word-Vectors SGNS(Mixed-large 综合)loss mask相关代码为pu learning策略的实现主要模块版本 python 3.6.9火炬 1.1.0变压器 3.0.2pytorchcrf 1.2.0torchcontrib 0.0.2
计算机系毕业设计
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
基于SpringBoot+MySQL图书销售管理系统网上书店项目源码+数据库(高分毕业设计&课程设计) 该项目是个人大作业项目源码,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!!!评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 图书管理系统 框架介绍 依赖 版本 Spring Boot 2 Mybatis Plus 3.5.3 jjwt 0.11.2 vue 2.0 ehcache 2.10.9 系统采用前后端分离,前端打包后放在 /resources/static 目录下面 直接启动后端工程即可访问 系统亮点 采用rsa非对称加密算法生成 jwt认证密钥 springboot集成ehcache作为缓存 采用aop方式记录接口访问日志 使用h2内存数据库,启动应用执行自动建表语句和初始化数据 统一异常和响应进行封装 集成springdoc作为接口文档 系统访问 http://wholevoid.com:9090/ 用户名及密码 admin/123456 图书管理系统 框
二极管钳位三电平VSG仿真模型 1.加入中点电位平衡 2.仿真有视频教程 3.THD均<5% 可以在此模型的基础上加入自适应控制、模型预测控制等等
基于Halcon的机器视觉试验平台的设计与研究 20181126
腾讯云开发者工具套件(SDK)3.0,SDK3.0是云 API3.0 平台的配套工具。目前已经支持cvm、vpc、cbs等产品,后续所有的云服务产品都会接入进来。新版SDK实现了统一化,具有各个语言版本的SDK使用方法相同,接口调用方式相同,统一的错误码和返回包格式这些优点。 为方便 Python 开发者调试和接入腾讯云产品 API,这里向您介绍适用于 Python 的腾讯云开发工具包,并提供首次使用开发工具包的简单示例。让您快速获取腾讯云 Python SDK 并开始调用。
说明文档1 队伍简介初赛名次第42名复赛名次第22名队伍名把球给我两名队员全部来自中国科学院大学2 算法思路首先手工标记第一阶段2015年和2017的图像里的建筑物,将大图像划分成小图像,训练多个模型,识别出图像中的建筑物,不对测试集(第二阶段的图像)进行任何标注,直接在图像上预测,分别识别出2015和2017的建筑物,再将所得的两张建筑物图像相减,对结果文件进行边缘平滑和散点去除即可得出最后的结果。切割成160*160、224*224、256*256大小的小图片训练模型基于第一阶段的训练数据,分别训练了deeplabv2、resnet_fcn两个模型,分别在3种大小的图像上训练得到了5个模型(由于resnet最小图像限制为197,只用了224和256两种大小的图像),设定输出概率大于0.5判定为建筑物,小于0.5则为非建筑物未在测试数据上进行建筑物标注,线下建筑物识别准确率82%左右,经过标注,建筑物识别准确率能达到90%。复赛初始提交,泛化成绩0.742。经过数据标注和再训练,最终成绩0.829。数据增强用于模型训练阶段,数据后处理是对
tdm64-gcc-5.1.0-2 (不盈利分享)
python语言mp3pl爬虫程序代码XQZQ
三相不平衡电压下T型NPC三电平并网逆变器并网控制 1.采用正负序分离锁相环以及正序PI控制,负序PI控制 2.采用中点电位平衡控制-零序电压注入法 3.采用SVPWM羊角波调制方式 4.提供参考文献 提供仿真源文件,电流环参数设计,正负序分离方法详解,零序电压注入法详解,SVPWM调制原理
Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设),个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-基于SpringBoot的旅游网站项目源码+数据库(高分毕设)Java毕业设计-个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!个人经导师指导并认可通过的毕业设计项目,评审分98分,项目中的源码都