资讯专栏INFORMATION COLUMN

【JavaScript入门】Array类型

zxhaaa / 2395人阅读

摘要:数组也是对象数据类型的数组也有属性名,只不过属性名是数字,我们把数字属性名称之为它的索引数组是以数字作为索引,索引从零开始,有一个属性代表数组的长度。

Array
数组也是对象数据类型的 typeof [] ->"object"

数组也有属性名,只不过属性名是数字,我们把数字属性名称之为它的索引:数组是以数字作为索引,索引从零开始,有一个length属性代表数组的长度。

类数组:类似于数组,但是不是数组
1、通过getElementsByTagName获取的元素集合是类数组
2、函数中的实参集合arguments也是类数组
...

循环数组中的每一项

Array.prototype.aa = 100;

//=>FOR循环操作
for (var i = 0; i < ary.length; i++) {
    console.log(arr[i]);
}

//=>FOR IN循环操作
for (var key in arr) {
    //key:属性名(数组中的属性名是索引)
    console.log(arr[key]);
}

//=>FOR循环只能遍历到数组私有的一些属性,而FOR IN循环可以把一些自定义的公共属性也能遍历到
数组中的常用方法
数组中有很多常用方法  console.dir(Array.prototype)

1、方法的意义和作用
2、方法的形参
3、方法的返回值
4、通过此方法,原来的数组是否发生了改变

实现数组的增加、修改、删除
var ary = [12,23,34];
push/unshift
//=>增加
/*
 * 1、push:向数组的末尾追加新内容
 *   参数:一到多个,任何数据类型都可以,想要给数组末尾追加什么,直接传递到push方法中即可,传递多个用逗号隔开
 *   返回值:新增后数组的长度
 *   原有数组改变了
 */ 

/*
 * 2、unshift:向数组开头追加新内容
 *   参数:需要追加的内容(可以是多个任何数据类型的值)
 *   返回值:新增后数组的长度
 *   原来数组改变了
*/

/*
 * 3、把数组当做一个普通的对象,使用对象键值对的操作,给其设置新的属性(索引)
 * arr[arr.length]=xxx  向数组的末尾追加了新的内容
*/

//=>删除
/*
 * 1、pop:删除数组最后一项
 *   参数:无
 *   返回值:被删除的那一项内容
 *   原有数组改变了
*/

/*
 * 2、shift:删除数组第一项
 *   参数:无
 *   返回值:被删除那一项的内容
 *   原有数组改变了
 * 使用shift删除第一项之后,后面每一项的索引都要向前进一位(导致后面项的索引发生改变)
*/

/*
 * 3、把数组当做普通的对象操作
 * delete删除:`delete ary[索引]`删除指定索引这一项(当前项被删除后,原有数组其它项的索引不会改变;当前数组的length也不会改变;)
 * 
 * ary.length--:删除数组最后一项
*/

//=>splice:数组中内置的方法,可以实现数组的增加、修改、删除
/*
 * splice实现删除
 *   splice(n,m):从索引n开始删除m个(m不写是删除到数组的末尾)
 *   返回值:被删除的内容(以一个新数组保存)
 *   原有数组改变了
 *   -> splice(0) 清空数组
 *   -> splice()  一项都不删除,返回一个新的空数组
 *   -> splice(0,1) 删除第一项
 *   -> splice(ary.length-1) 删除最后一项
 *  
 * splice实现修改
 *  splice(n,m,x):在原有删除的基础上,用x代替删除的内容
 * 
 * splice实现增加
 *  splice(n,0,x):在修改的基础上,我们一项都不删除,把x插入到索引n的前面
 *  -> ary.splice(0,0,x) 向数组开头追加新的内容
 *  -> ary.splice(ary.length,0,x) 向数组末尾追加新元素
*/
数组的查询
/*
 * slice:数组的查询
 *  参数:slice(n,m) 从索引n开始找到索引为m处(不包含m)
 *  返回值:把找到的部分以一个新数组返回
 *  原来的数组不变
 *   
 *  -> slice(n) 从索引n开始找到末尾
 *  -> slice(0) / slice() 数组克隆,克隆一份和原来数组一模一样的新数组
 *  -> slice支持负数索引,如果传递的索引为负数,浏览器解析的时候是按照 总长度+负数索引 来处理的
 *  ...
*/
将两个数组进行拼接
/*
 * concat:将多个数组拼接在一起
 *  参数:要拼接的内容(把内容放在原数组的后面),可以是一个数组,也可以是一些数据值
 *  返回:拼接后的新数组
 *  原有数组不变
 *   
 *  -> concat() 什么都没有拼接,相当于把原有数组克隆一份一模一样的新数组出来
*/

把数组转换为字符串的
/*
 * 1、toString:实现把数组转化为字符串(转换后的字符串以逗号分隔每一项)
 *   参数:无
 *   返回值:转换的字符串
 *   原有数组不变
*/

/*
 * 2、join:把数组按照指定的分隔符转换为字符串,和字符串中的split相对应
 *   参数:指定的链接符
 *   返回值:转换后的字符串
 *   原有数组不变
*/

//=>已知数组中的每一项都是数字,想实现数组求和,我们如何实现?
//1、循环实现
var total=null;
for(var i=0;ievel:把字符串变为JS表达式执行
实现数组中每一项的排序和排列
/*
 * 1、reverse:把数组中的每一项倒过来排列
 *   参数:无
 *   返回值:排序后的数组
 *   原有数组改变 
*/

/*
 * 2、sort:实现数组的排序
 *   参数:无或者回调函数
 *   返回值:排序后的数组
 *   原有数组改变
 *   
 * 不传递参数的情况下:可以给10以内的数字进行升序排列,但是超过10的就无法处理了(多位数只识别第一位)
 *  
 * ary.sort(function(a,b){
 *     return a-b; //->升序
 *     return b-a; //->降序
 * });
*/
验证数组中是否包含某一项
/*
 * indexOf / lastIndexOf:获取当前项在数组中第一次或者最后一次出现位置的索引
 *   数组中的这两个方法在IE6~8下不兼容
 *   字符串中的这两个方法兼容所有的浏览器
 * 
 * 如果当前数组中并没有这一项,返回的索引是-1,我们根据这一点可以验证数组中是否包含这一项 
*/
if(ary.indexOf(12)>-1){
    //->数组中包含12
}

Array.prototype.myIndexOf = function myIndexOf(value){
    var result = -1;
    for(var i=0;i
遍历数组中每一项的方法
//=>以下方法在IE6~8下都不兼容

/*
 * forEach:遍历数组中的每一项
*/
arr.forEach(function(value,index){
    //=>数组中有多少项,当前回调函数执行多少次;每一次传递进来的value就是当前遍历数组这一项的值,index就是遍历这一项的索引
});

/*
 * map:遍历数组中的每一项,在forEach的基础上,可以修改每一项的值
*/
arr.map(function(value,index){
    //=>数组中有多少项,当前回调函数执行多少次;每一次传递进来的value就是当前遍历数组这一项的值,index就是遍历这一项的索引
    return xxx; //=>RETURN后面返回的结果就是把当前遍历的这一项修改为xxx
});

filter
find
reduce
every
...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93746.html

相关文章

  • 《廖雪峰JavaScript-快速入门》笔记

    摘要:文章内容来源廖雪峰快速入门赋值注释数据类型不区分整数和浮点数,统一用表示。条件判断使用来进行条件判断。最新的规范引入了新的数据类型,是一组键值对的结构,具有极快的查找速度。一个数组实际上也是一个对象,它的每个元素的索引被视为一个属性。 文章内容来源:廖雪峰JavaScript-快速入门 赋值 var x = 1; 注释 // comment /* comment */ 数据类型 Num...

    caozhijian 评论0 收藏0
  • JavaScript函数式编程入门经典

    摘要:函数式编程的定义函数是一段可以通过其名称被调用的代码。纯函数大多数函数式编程的好处来自于编写纯函数,纯函数是对给定的输入返回相同的输出的函数,并且纯函数不应依赖任何外部变量,也不应改变任何外部变量。 一个持续更新的github笔记,链接地址:Front-End-Basics,可以watch,也可以star。 此篇文章的地址:JavaScript函数式编程入门经典 正文开始 什么是函...

    silvertheo 评论0 收藏0
  • JavaScript-从入门到装逼(一)

    摘要:变量用声明声明一个变量在中,变量也可以不做声明作用域下章讲解数据类型数字小数点字符串布尔类型或数组也可以和表示变量不含值。对象与对象相关联的任何值函数返回的值数据类型我将在后面章节详细讲解。 作者吐槽 写这篇文章为了巩固自身基础,也希望能够帮助到想学JS的朋友更容易入门。如有错误点,望朋友指点。谢谢! Js应该写在哪里 写在中 由组成的代码就是JavaScript代码,浏览器识别是JS...

    CoXie 评论0 收藏0
  • 函数中的apply,call入门介绍

    摘要:函数中的入门牵扯到就要先说一下它们和函数的渊源函数既是也是对象它和其它的对象没有什么区别。但是我们可以通过和在函数调用时显示指定所需的值。那就意味这任何函数可以被任何对象调用这才是和的方法的最终目的。否则会出现数组元素为的情况值值值值值 函数中的apply,call入门   牵扯到apply,call就要先说一下它们和函数的渊源 Javascript函数既是也是对象   它和其它的...

    yankeys 评论0 收藏0
  • JavaScript面向对象入门

    摘要:在中是没有这样的关键字的,我们需要这样做定义在方法内也就是内部,也可以看作成构造函数的变量,就是私有变量。移动气球我们需要用到定时器。 什么是JavaScript? 我们可以从几个方面去说JavaScript是什么: 基于对象 javaScript中内置了许多对象供我们使用【String、Date、Array】等等 javaScript也允许我们自己自定义对象 事件驱动 ...

    or0fun 评论0 收藏0

发表评论

0条评论

zxhaaa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<