位置: 编程技术 - 正文

javascript类型系统 Array对象学习笔记(javascript常用类型)

编辑:rootadmin

推荐整理分享javascript类型系统 Array对象学习笔记(javascript常用类型),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js中的类是什么,javascript类定义,javascript 基本类型,js中的类是什么,javascript几种类型,javascript 类型,javascript 类型,javascript 类型,内容如对您有帮助,希望把文章链接给更多的朋友!

数组是一组按序排列的值,相对地,对象的属性名称是无序的。从本质上讲,数组使用数字作为查找键,而对象拥有用户自定义的属性名。javascript没有真正的关联数组,但对象可用于实现关联的功能

  Array()仅仅是一种特殊类型的Object(),也就是说,Array()实例基本上是拥有一些额外功能的Object()实例。数组可以保存任何类型的值,这些值可以随时更新或删除,且数组的大小是动态调整的

一、数组创建

  与Javascript中的大多数对象一样,可以使用new操作符连同Array()构造函数,或者通过使用字面量语法来创建数组对象

【1】使用Array构造函数(在使用Array构造函数时,也可以省略New操作符),可以将数组实例的值传递给构造函数,以逗号分隔作为参数,Array()构造函数可以接收(大约亿)个参数

  如果只有一个参数:若传递的是数值,它将用来设置数组的长度;若传递的是其他类型的参数,则会创建包含那个值的只有一项的数组

【2】使用数组字面量表示法

二、数组操作

  在读取和设置数组的值时,要使用方括号并提供相应值的基于0的数字索引

  数组的长度length属性表示数组中值的数量,而数组的数字索引是从0开始的;且length属性可读可写,通过设置数组的Length属性,可以从数组的末尾移除项或向数组中添加新项。如果设置的长度高于数组中值的实际数量,将向数组中添加undefined值;若将长度值的数量设置为少于数组中的值的数量,可能会删除数组中的值

  当把一个值放在超出数组大小的位置上时,数组就会重新计算其长度值,即长度值等于最后一项的索引加1,Javascript将会使用undefined值填充当前索引之前的所有索引

[tips]利用length属性可以方便地在数组末尾添加新项

colors[colors.length] = 'black';

三、继承的方法

toString()

  返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串

valueof()

  返回的还是数组

toLocaleString()

  调用该方法时,数组的每一项的值调用的是toLocaleString()方法

四、实例方法

数组转换join()

  数组继承的toLocaleString()、toString()、valueOf()方法,在默认情况下都会以逗号分隔的字符形式返回数组项;而join()方法可以使用不同的分隔符来构建这个字符串,join()方法只接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串。如果不给join()方法传入任何值,或者传入undefined,则使用逗号作为分隔符

  [注意]如果数组中的某一项的值是null或者undefined,那么该值在join()、toLocaleString()、toString()和valueOf()方法返回的结果中以空字符串表示

数组检测  自从ES3做出规定之后,就出现了确定某个对象是不是数组的经典问题。一般的常见方法是使用instance操作符,但该方法有它的局限性;ES5专门新增了isArray()方法来检测数组

  instanceof操作符的问题在于它假定只有一个全局执行环境,如果网页中包含多个框架,那实际上就存在两个以上不同的全局环境,从而存在两个以上不同版本的Array构造函数。如果从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数

 但是,在不同框架中可以跨原型链调用toString()方法

  ES5新增了Array.isArray()方法,来最终确定某个值到底是不是数组,而不管它在哪个全局环境中创建的

Array.isArray()

javascript类型系统 Array对象学习笔记(javascript常用类型)

栈和队列push()

  可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度

pop()

  从数组末尾移除最后一项,减少数组的length值,然后返回移除的项

shift()

  移除数组中的第一个项并返回该项,同时数组的长度减1(结合使用shift()和push()可以模拟队列)

unshift()

  在数组前端添加任意个项并返回新数组长度(结合使用unshift()和pop()从相反方向模拟队列)

  [注意]IE7-浏览器unshift()方法返回的总是undefined

排序方法reverse()

  反转数组的顺序,返回经过排序之后的数组;而原数组顺序也发生改变

sort()

  默认情况下,按字符串升序排列数组项,sort方法会调用每个数组项的toString()方法,然后比较得到的字符串排序,返回经过排序之后的数组,而原数组顺序也发生改变

  

[注意]sort()方法可以接受一个比较函数作为参数,以便指定哪个值在哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数

[tips]比较函数

对于数值类型或valueOf()方法会返回数值类型的对象类型,比较函数可以简化为:

[tips]创建一个随机数组

操作方法concat()

  基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组(concat()不影响原数组)

  如果不给concat()方法传递参数时,它只是复制当前的数组;如果参数是一个或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中;如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾

slice()

  基于当前数组中的一个或多个项创建一个新数组,接受一个或两个参数,即要返回项的起始和结束位置,最后返回新数组(slice()不影响原数组)

  如果没有参数,则返回原数组;如果只有一个参数时,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项;若有两个参数时,该方法返回起始位置和结束位置之间的项,但不包括结束位置的项;若参数为负数时,则用数组长度加负数作为参数;若结束位置小于开始位置,则返回空数组

splice()

  原数组变为修改后的数组,而splice()返回从原数组中删除的项组成的数组,若无删除项则返回空数组。若第一个参数为负数时,则用数组长度加负数作为参数;若第二个参数为负数时,则用0作为参数

  [1]删除:两个参数为要删除的第一项的位置、要删除的项数

  [2]插入:三个参数为起始位置、0(要删除的基数)、要插入的项

  [3]替换:三个参数为起始位置、要删除的项数、要插入的项

位置方法  ES5为数组实例添加了两个位置方法indexOf()、lastIndexOf()。这两个方法都接收两个参数:要查找的项、表示查找起点位置的索引(可选)。返回第一个满足条件的查找项在数组中的位置,如果没有找到则返回-1(位置方法不会影响原数组)

  [注意]方法在比较参数时,使用的是全等操作符

indexOf()     从前向后查找lastIndexOf()   从后向前查找

[tips]返回满足条件的项的所有索引值

标签: javascript常用类型

本文链接地址:https://www.jiuchutong.com/biancheng/383758.html 转载请保留说明!

上一篇:基于javascript实现根据身份证号码识别性别和年龄(基于javascript的毕业设计选题)

下一篇:javascript返回顶部的按钮实现方法(jquery返回顶部代码)

  • 购买银行理财产品的几个必须知道
  • 小规模教育培训计划
  • 工程招标费计入什么科目
  • 企业政府性征地补偿款如何合法使用
  • 福利性收入属于什么分配
  • 周转材料低值易耗品科目借方登记低值易耗品的减少
  • 税务房屋租赁发票图片
  • 固定资产后续支出的确认和处理
  • 原始凭证审核的内容
  • 外出经营预缴税
  • 不够起征点免缴的增值税如何做税务处理?
  • 房屋购买安装电梯可以抵扣吗?
  • 分公司所得税怎么交
  • 广告制作费有哪些项目
  • 实收资本印花税最新规定
  • 列举20种不征增值税产品
  • 办公设备发票开票内容
  • 租赁的厂房改造可以费用化吗
  • 固定资产折旧率是多少
  • 行政单位提现预算会计处理
  • 预提费用利息会增加吗
  • php生成guid
  • 向农民购进农产品
  • 一帆风顺的养殖土壤用什么土
  • 仓储费计入存货成本吗
  • 月末增值税计算公式
  • 路由器重启以后wifi不见了
  • 企业所得税职工福利扣除标准
  • 应收账款怎么做会计分录
  • vue框架是什么样子的
  • 基于Java+SpringBoot+Vue前后端分离仓库管理系统设计实现
  • 机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
  • 应用加载慢
  • 小规模纳税人直接从农户购入农产品要交增值税吗
  • pythonzen
  • 增值税主表和附表
  • 企业年金是否要交个税
  • 宣传费开票属于什么类别
  • mysql 网页用户界面
  • 衍生工具什么意思
  • 怎么计算土地增值税收入
  • 土地增值税清算收入如何确定
  • 防暑降温费怎么入账
  • 向投资者发放现金红利
  • 土地勘测费收费标准
  • 奖金是职工福利?
  • 预缴所得税弥补以前年度亏损
  • 暂估未取得发票汇缴纳税调增怎么填
  • 公司年底做财务报表什么吗
  • 预收物业费预收什么意思
  • 免费领课程有什么陷阱
  • mysql存储引擎面试题
  • sql修改表的所属空间
  • window系统怎么用
  • 服务器维护和计划的区别
  • win10进入安全模式后怎么恢复正常模式启动电脑
  • 怎样取消进windows 密码
  • ubuntu无线网卡驱动离线安装
  • 4G内存时linux的mtrr表不正确的解决
  • linux bzz
  • unity3d documentation
  • node.js项目结构
  • node.js动态网页
  • pyinstaller如何用
  • jQuery使用$.ajax提交表单完整实例
  • 批处理结束后不关闭窗口
  • 从零开始学什么好
  • JavaScript中的数据类型分哪为两大类?
  • javascript要怎么学
  • android 进程通信
  • js获取宽高
  • html仿淘宝
  • 按犍设置
  • android天气预报课程设计报告
  • 上海烟草集团董事长是谁
  • 种子公司缴税吗多少钱
  • 投资性房地产如何进行后续计量
  • 施工企业建筑机械管理机构主要职责是负责建筑机械的
  • 浙江国地税联合税务局
  • 从印度往中国邮寄药品
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设