[JS高程]引用类型(Object、Array)
引用类型:Object、Array
Object:
person.name =>推荐,除非必须使用变量([])来表示
person["name"]
区别:[]可以通过变量来访问(出现关键字、保留字、导致语法错误的字符都可以通过方括号来表示)
Array:
构造函数:
var colors = Array(3) =>数组length:3
var color = Array('red') =>数组length:1
数组字面量:
colors = ['red','yellow','blue']
检测数组:
Array.isArray()
转换方法:
toLocalString()
toString() 转成字符串,用typeof弹出的是string
valueOf() 返回的还是数组,用typeof弹出的是object
栈方法(后进先出)和队列方法(先进先出):
push() 进,返回值:数组的长度
pop() 出,数组末尾最后一项,返回值:移除的项
unshift() 进,返回值:数组的长度
shift() 出,数组第一项,返回值:移除的项
后进先出: push() pop()
先进先出: push() shift()
重排序方法:
reverse() 反转
sort() 排序,字符串排序,实现数值排序,需要在sort里接收函数,即:
sort(function(a,b){
return a-b; 从小到大
return b-a; 从大到小
})
正数交换位置
操作方法:
concat() 连接起来
var color = ['red']
console.log(color.concat('yellow','blue')) =>red,yellow,blue
slice() 截取子串
1个参数:当前位置到末尾
2个参数:当前位置到结束位置(不包括结束位置)
参数接受负数,结束位置<开始位置,返回空数组,即slice(4,3),为空数组
var colors = ['red','yellow','blue','green','grey'] console.log(colors.slice(1)); =>'yellow','blue','green','grey' console.log(colors.slice(1,3)); =>'yellow','blue' console.log(colors.slice(-2,-1) =>'green',相当于slice(3,4),即length-2,length-1
splice() 删除、替换、插入,返回值为删除的项
删除(2个参数) var colors = ['red','green','blue'] console.log(colors.splice(0,1)); =>返回值为删除的项,即'red' console.log(colors) =>'green','blue'
替换(3个参数)
console.log(colors.splice(1,1,'yellow','purple')); =>'green'
console.log(colors) =>'red','yellow','purple','blue'
删除(3个参数,第2个参数为0) console.log(colors.splice(1,0,'yellow','purple')); =>空 console.log(colors) =>'red','yellow','purple','green','blue',注:在位置1前面插入元素
位置方法:
indexOf() 从前往后
lastIndexOf() 从后往前
没有找到返回-1,是“全等”操作
var numbers=[1,2,3,4,5,4,3,2,1]
console.log(numbers.indexOf(4)) =>3
console.log(numbers.lastIndexOf(4)) =>5
console.log(numbers.indexOf(4,4)) =>5,表示从第4位开始向后找数字‘4’
console.log(numbers.lastIndexOf(4,4) =>3,表示从第4位开始向前找数字‘4’
迭代方法:(IE9+)
(里面包括函数,这个函数中有三个参数:数组项的值item、该项在数据中的位置index、数组对象本身)
every()、some()
查询数组中的项是否满足某个条件,区别在于:every(),传入的函数必须第一项返回true,才会返回true(and)
some(),传入的函数只有某一项返回true,就返回true(or)
var numbers=[1,2,3,4,5,4,3,2,1] var everyResult = numbers.every(function(item,index,array)){ return (item>2) } console.log(everyResult)=>false
如果将every改成some,结果为true
filter(),筛选,查询符合某些条件的所有数组项
var filterResult = numbers.filter(function(item,index,array){ return (item>2)
}) console.log(filterResult) =>[3,4,5,4,3]
map(),用来对数组项进行运算
var mapResult = numbers.map(function(item,index,array){ return (item*2)
})
console.log(mapResult) =>[2,4,6,8,10,8,6,4,2]
forEach(),对数组中的每一项运行传入的函数,无返回值,本质上与for一样
归并方法:
(里面包括函数,这个函数中有四个参数:前一个值prev、当前值cur、索引项index、数组对象array)
reduce(),从前往后
reduceRight(),从后往前
var values = [1,2,3,4,5] var sum = values.reduce(function(prev,cur,index,array){ return prev+cur; }) console.log(sum) =>15
[JS高程]引用类型(Object、Array)的更多相关文章
- JS 深度拷贝 Object Array
JS 深度拷贝 Object Array function cloneObj(o) { var isArray = o instanceof Array; var isObject = o insta ...
- JS高程5.引用类型(3)Array类型-检测数组
1. instanceof操作符(ECMAScript3) 对于一个网页,或者是一个全局作用域而言,使用instanceof操作符来检测数组就可以得到满意的结果. 语法:if(value instan ...
- JS高程5.引用类型(4)Array类型的各类方法
一.转换方法 所有的对象都具有toLocaleString(),toString()和valueOf()方法.调用toString()方法会返回由数组中的每个值的字符串拼接而成的一个以逗号分隔的字符串 ...
- 再谈js对象数据结构底层实现原理-object array map set
如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...
- js 判断值为Array or Object的方法
①obj instanceof Array / Object ②Array.prototype.isPrototypeOf(obj) ③Object.prototype.toString.call(o ...
- Js判断参数(String,Array,Object)是否为undefined或者值为空
在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空.如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型,通过 ...
- 《JS高程》创建对象的7种方式(完整版)
一.理解对象 ECMA-262定义对象:无序属性的集合,其属性可以包含基本值.对象或者属性. 我们可以把 ECMAScript 的对象想象成 散列表:无非就是一组 名值对,其中值可以是数据或函数. 创 ...
- js之引用类型
一.摘要: <javascript高级程序设计第三版>一书中单独有一章对js的引用类型(Object.Array.RegExp.Function:基本包装类型:Boolean.Number ...
- JavaScript--我发现,原来你是这样的JS(引用类型不简单,且听我娓娓道来)
一.介绍 没错,这是第五篇,到了引用类型,这次要分成两次博文了,太多内容了,这是前篇,篇幅很长也很多代码,主要讲引用类型和常用的引用类型,代码试验过的,老铁没毛病. 坚持看坚持写,不容易不容易,希望大 ...
随机推荐
- Oracle 列操作(增加列,修改列,删除列)
1.增加一列: Alter table 表名 add 列名 varchar2(10); 2.修改一列: Alter table 表名 modify 列名 varchar2(20); 3.删除一列: A ...
- PRD学习笔记:一些需要注意的说明
控件说明 1)输入框 若输入框有默认提示,点击输入框,弹出软键盘. 当输入框内不为空(空格除外)时,默认显示消失. 2)软键盘的弹出及退去机制 当输入框内必须输入的为数字时,弹出数字软键盘.其余时候, ...
- 数据结构之Heap (Java)
Heap简介 Heap译为“堆”,是一种特殊的树形数据结构,它满足所有堆的特性:父节点的值大于等于子节点的值(max heap),或者小于等于子节点的值(min heap).对于max heap 根节 ...
- c#:readonly与const的区别
readonly与const的区别: 1.初始化:const 字段只能在该字段的声明中初始化. readonly 字段可以在声明或构造函数中初始化. 2.值: const 字段是编译时常量(con ...
- Openjudge-NOI题库-旅行-数论
题目描述 Description 转眼毕业了,曾经朝夕相处的同学们不得不都各奔东西,大家都去了不同的城市开始新的生活.在各自城市居住了一段时间后,他们都感到了一些厌倦,想去看看其他人的生活究竟如何,于 ...
- ngDialog 设置其宽度大小
[ngdialog弹窗大小设置(angularjs)] 方法一:添加css样式属性 css: .ngdialog.ngdialog-theme-plain.custom-width-70 .ngdia ...
- CentOS7 下安装telnet服务
今天搞了下 Centos 7 下面升级 openssl 和 openssh ,顺便装了下 telnet # 安装 telnet 避免 ssh 无法登录 yum -y install xinetd te ...
- etcd 集群搭建
现有三台机器 CentOS7 node1 10.2.0.10 node2 10.2.0.11 node3 10.2.0.12 1 源码解压命令行方式 node1 ./etcd --name infr ...
- java 生成二维码
package com.sun.erwei; import java.awt.Graphics2D;import java.awt.geom.AffineTransform;import java.a ...
- Func,Action 的介绍
Func,Action 的介绍 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中 ...