数组(Array)详解;
Array是ECMAScript最常见用的类型;数组的每一项都可以保存任何类型的数据;如:可以用数组的第一个位置来保存字符串,可以用数组的第二个位置来保存数值,可以用第三个位置来保存对象等;数组的大小还可以动态调整;
1、访问数组可以用索引
var arr = [1, 2, 3, 9]; arr[2] = "ad"; alert(arr);//,2,ad,9; arr[4] = "我是增加的"; alert(arr) //1,2,ad,9,我是增加的
也就是说,如果索引小于数组的项数,返回值是这个索引对应的值,如果设置某个值的索引超过了数组现有的项数,会替换指定位置的值;
数组的项数保存在length属性中,这个属性始终会返回0或者更大的值;length不只是只读的,通过这个属性可以向末尾移除项,或者向数组中添加新项;
如果访问数组中不存在的索引的值,会返回undefined值;
2、检查数组(数据类型)
typeof只是能检测基本数据类型,不能加检测对象;
js中通过Object.prototype.toString.call()方法,判断对象属于那种内置类型,可以检测任何数据类型,包括基本数据类型;
var arr = []; alert(Object.prototype.toString.call(arr)) //[object Array] var obj = {}; alert(Object.prototype.toString.call(obj)) //[object Object] var a = 123; alert(Object.prototype.toString.call(a)) //[object Number] 3、将数组转换成字符串toString() join() valueof();都会以逗号字符串的形式返回数组项,但是join()方法会议不同的分隔符 来构建这个字符串;但是join()方法不传递任何值,也会以逗号分隔开的;
var arr = ["22","88","99"]; console.log(arr.toString()); //22,88,99 console.log(arr.join(".."));//22..88..99
4、数组的方法:a) 向数组的末尾添加项 push()
var arr = ["22", "88", "99"]; var res = arr.push("op"); console.log(arr, res) // ["22", "88", "99", "op"] 4 返回添加后的是数组的长度;
b) 删除数组末尾项 pop()
var arr = ["22", "88", "99"]; var res = arr.pop(); console.log(arr, res) // ["22", "88"] "99" 4 返回删除的项;
c) 向数组的开头添加项 unshift()
var arr = ["22", "88", "99"]; var res = arr.unshift("op"); console.log(arr, res) // ["op", "22", "88", "99"] 4 返回删除后数组的长度
d) 向数组的开头删除项 shift();
var arr = ["22", "88", "99"]; var res = arr.shift(); console.log(arr, res) // ["88", "99"] "22" 返回删除的项 e) sort():重新排序数组;
var arr = [1, 3, 7, 2, 4, 3, 2]; arr.forEach(function(item,index){if(arr[index] == item){alert("正确")} }) //返回 正确
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。every() 方法使用指定函数检测数组中的所有元素:
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
注意: every() 不会对空数组进行检测。注意: every() 不会改变原始数组。
some()方法与every()方法相同,不相同的是,some方法只要传入的函数对数组中的某一项返回true就返回true;
var a = [1, 4, 8, 3, 2, 9]; var btn = a.some(function (item, index, arry) {return item > document.getElementById("box").innerHTML; })console.log(btn) //返回true。要是li的值是3,就返回false;
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
var a = [1,3,5,6]; var res = a.filter(function(item,index){return item > 5; }) console.log(res) //返回大于5的数,6
<ul><li class="" id="box" title="dsfdasf">3</li><li id="box">2</li><li>3</li> </ul>
var a = [1, 4, 8, 3, 2, 9]; var btn = a.every(function (item, index, arry) {return item > document.getElementById("box").innerHTML; })console.log(btn) //返回true。要是li的值是3,就返回false;
var arr = [1, 3, 7, 2, 4, 3, 2]; arr.map(function(item,index){if(arr[index] == item){alert("正确")} }) //返回 正确
var arr = [1, 3, 7, 2, 4, 3]; arr.sort() console.log(arr) //[1, 2, 3, 3, 4, 7] var ary = [23, 67, 134, 19, 56]; console.log(ary.sort());//[134, 19, 23, 56, 67] //可以看出,sort对10以内的排序可以,10以上的就失效,可以给sort()添加一个函数; function sum(a,b){return a-b //如果升序就用a-b 如果降序就用b-a } console.log(ary.sort(sum));//[19, 23, 56, 67, 134]
f) reverse();倒叙,使数组的排序倒置;
var arr = [1, 3, 7, 2, 4, 3]; arr.reverse() console.log(arr);//[3, 4, 2, 7, 3, 1]
g) concat():数组的拼接;将两个或者多个数组拼接在一起;不会改变原来数组的值;会创建一个新数组;
var arr = [1, 3, 7, 2, 4, 3]; var arr1 = ["a", "c"]; var arr2 = ["yellow", "red"]; var ary = arr.concat(arr1, arr2); alert(ary)//1,3,7,2,4,3,a,c,yellow,red
h) slice()接受两个参数,返回数组的起始位置,结束位置;如果只有一个参数,返回该参数指定的位置到结尾项;如果两个参数,返回从第一个参数的起始位置到第二个参数的结束位置,不包括结束位置的项;不会影响原来的数组; 就是查找的意思;
var arr = [1, 3, 7, 2, 4, 3]; var ary = arr.slice(2,4); console.log(ary);//[7, 2]
i) splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目,返回的是一个数组;删除:splice有两个参数的时候;splice(1,2) 从索引2开始,删除3项;
var arr = [1, 3, 7, 2, 4, 3]; var ary = arr.splice(1, 2); alert(ary)//3.7 返回的是删除的项
插入:三个参数,第二个参数为0;splice(0,0,"red");将red添加到索引为0的前面;
var arr = [1, 3, 7, 2, 4, 3]; arr.splice(1, 0,"red"); alert(arr)//1,red,3,7,2,4,3 添加到起始索引的前面
替换:三个参数,第二个参数不为0;
var arr = [1, 3, 7, 2, 4, 3]; arr.splice(1, 1,"red"); alert(arr)//1,red,7,2,4,3 将索引为1的项,1项替换掉
j)查找项在数组中的位置;indexOf() lastIndexOf() 这两个都接受两个参数,要查找的项和表示起点位置的索引,索引可以不写,但就表示从头开始查找;indexOf是从数组的开头开始查找,lastIndexof()是从数组的末尾开始查找;
var arr = [1, 3, 7, 2, 4, 3]; console.log(arr.indexOf(2, 0)); //返回3 2所在位置的索引;
4、循环方法:forEach() map()参数是一个函数;函数里边第一个参数为数组的每一项,第二个参数为第一个参数对应的索引;
var arr = [1, 3, 7, 2, 4, 3, 2]; console.log(arr.lastIndexOf(2)); //6 如果没有找到要找的那一项,就会返回-1;多用于判断;
数组(Array)详解;相关推荐
- jQuery数组处理详解(含实例演示)
jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的 ...
- (05)System Verilog 数组类型详解
(05)System Verilog 数组类型详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 数组类型详解 5)结语 1.2 F ...
- python随机生成二维列表_对python产生随机的二维数组实例详解
对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...
- Numpy.array()详解 、np.array与np.asarray辨析、 np.array和np.ndarry的区别
记录一下numpy.array()的详细用法,以及与np.asarray()和np.ndarray()的区别. 目录 1. Numpy.array()详解 1.1 函数形式 1.2 参数详解 1.3 ...
- 史上最全JavaScript数组对象详解(二)
JavaScript数组对象详解(二) 上一篇博客我们讲到了JavaScript数组对象的创建,访问和属性,接下来一篇博客主要讲一下JavaScript数组对象的方法及使用.说到数组的方法,主要分为两 ...
- php的取数组长度,php获取数组长度详解
php获取数组长度详解 在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧. php如何获取数 ...
- Numpy.array()详解
1. Numpy.array()详解 该函数的作用一言蔽之就是用来产生数组. 1.1 函数形式 numpy.array(object, dtype=None, copy=True, order='K' ...
- php二维数组实例_什么是php二维数组?php二维数组实例详解
什么是php二维数组? 二维数组又称为矩阵,本质上是以数组作为数组元素的数组,一个数组的元素如果是一维数组,那么我们就称这个数组是二维数组. PHP二维数组实例详解 我们之前的一篇文章<PHP数 ...
- php 数组 指针,php之数组指针详解
本文主要和大家分享php之数组指针详解,首先我们会和大家分享php 数组指的针操作方法,希望能帮助到大家. 一.php 数组指针操作 利用php的内置函数:key,current,next(),pre ...
最新文章
- Mysql中大表添加索引的办法
- PHP的转义函数 htmlspecialchars、strip_tags、addslashes解释
- BZOJ 1003: [ZJOI2006]物流运输trans
- 8:Math.atan2、PathMeasure、点赞飘心效果、点赞数字滚动+1效果、集成支付
- 【django】路由传递参数
- Daily tips-7月
- 新手必学的java报表开发工具FineReport实用技巧
- 获取当前组策略配置的信息
- java jar 启动脚本
- c语言+编程+画图形,C语言图形编程——绘图函数.doc
- 安卓开发基础知识4(三星 、ARM 为大朋背书,详解VR一体机解决方案)
- 项目经理和产品经理之区别
- Prizmo Pro for Mac(OCR文字扫描识别软件)
- 光机电一体化实训考核装置
- 多因素cox回归结果解释 第二十八讲 R语言-Cox比例风险模型1 - 知乎 (zhihu.com)
- 如何卸载阿里巴巴PC流氓软件
- 低效程序员的9个坏习惯
- calc() 工作原理
- 火影忍者粉:入手一个酷炫的NARUTO发光手机壳
- 变位词的多种判断方法
热门文章
- android日历事件 简书,iOS EventKit 添加日历及提醒事项(重复提醒)
- 比较不错的互联网盈利模式分析
- 小啊呜产品读书笔记001:《邱岳的产品手记-10》第19讲 产品经理如何与开发打交道(上):打破思维的边界 第20讲 产品经理如何与开发打交道(下):合作与共赢
- 数据中台到底是解决什么问题的
- iis5.1(xp)发布网站(转)
- 在线造字做字库、 红莓繁星技传神-逐浪点顿圆头工程笔手写字创作全过程
- 【工具集:在线解方程、自动解题、科学计算】
- Android开发——NFC标签读写
- 短视频课程内容培训(短视频培训课程大纲)
- Android 铃声多媒体音量、静音、震动(附源码)