犀牛书随手记-06
来源:互联网 发布:大连理工大学网络教育 编辑:程序博客网 时间:2024/05/01 21:11
在JS中一个对象的数据属性一般有4个特性,分别为
- 值(value)
- 可写性(writable)
- 可枚举性(enumerable)
- 可配置性(configurable)
后三者的值都是布尔型
Object.getOwnPropertyDescriptor() 可以获得某个对象特定属性的属性描述符
想要批量修改或者创建这四个特性需调用
Object.defineProperties()第一个参数是要修改的对象,第二个参数是一个映射表,它包含需要新建或者修改的属性的名称,以及他们的属性符描述
单个调用Object。defineProperty()
(只能修改自身的不能修改继承的)
数组
- 数组中的索引可以是不连续的(对于不连续的数组,其length属性大于元素个数)
- 数组有两种创建方式(直接量,跟构造函数)
//直接量var ary = [1,3,2];//构造函数var ary = new Array();/* 如果实例化一个数组对象时传递了一个参数 ary = new Array(10); 表示的是 ary这个数组的长度是10; 如果传递了两个或者以上则跟直接量创建的‘一样’*/
- 所有的数组都是对象,可以为其创建任意名字的属性。
-
ECMAScript 5 中新增的数组方法,基本都是遍历数组,原数组本身不变。
这些方法接受两个参数,一个function,一个context
第一个参数function中一般传递三个参数,分别为:当前遍历到的数组元素,当前遍历到的数组元素的索引,数组本身。
第二个参数 context 是可选参数,传递了,那么第一个参数function中的this,即为context。默认为window
1.forEach,从头自尾的遍历数组的每一项
举个栗子
var ary =[1,2,3,4];ary.forEach(function(){ console.log(arguments);})/*运行结果VM146:3 [1, 0, Array[4]]VM146:3 [2, 1, Array[4]]VM146:3 [3, 2, Array[4]]VM146:3 [4, 3, Array[4]]*/
2.map:将数组的每一项传给指定的函数,并返回一个数组
举个栗子
var b = ary.map(function(item){item *= item;})/*运行结果b[undefined, undefined, undefined, undefined]*/var b = ary.map(function(item){ return item *= item;})/*运行结果b[1, 4, 9, 16]*/
3.filter()返回的数组元素是调用的数组的一个子集,通过传递的逻辑来判断。
举个例子
var b = ary.filter(function(item){ return item >2;})/*b[3, 4]*/
4.every()和some()
它们对数组元素应用指定函数进行判断,返回true跟false
every是针对所有的,只有当遍历完所有且均满足条件时才会返回true,在遍历的过程中,一旦有不符合条件的,则返回false,并停止遍历。
举个例子
var num = 0;ary.every(function(item){ num++; return item<2;})/*falsenum2*/
some是针对,数组其中某个元素,一旦有一个元素满足条件,则返回true,且终止遍历,否则,直到遍历玩所有的,均不符合条件,则返回false。
5.reduce 跟 reduceRight
reduce()和reduceRight是使用指定的函数将数组元素进行组合,生成单个值。
举个例子
ary.reduce(function(x,y){return x+y;})//10
reduce 需要两个参数。第一个是执行简单会操作的函数。第二个参数是给函数传递一个初始值。
举个例子
ary.reduce(function(x,y){return x+y;},10)//20
第一个参数function的参数
第一个为,当前计算的累积值(默认为0,如果reduce传递了第二个参数,则为第二个参数的值)
第2-4个参数,数组元素,数组元素索引,数组本身
注意在空数组上,不带第二个参数(初始值)会报类型错误
reduceRight的工作原理与reduce的原理类似,不同的是,reduce是从索引低到高处理数组,reduceRight刚好相反,从高到低处理。
6.indexOf()跟lastIndexOf()
搜索整个数组中具有给定值的元素。
indexof 其第一次出现的索引值
lastIndexOf 最后一次出现的索引值
找不到则返回-1
举个栗子
var ary = [1,3,1,3,1];var b = ary.indexOf(1);//0var b = ary.lastIndexOf(3);//3var b = ary.indexOf(10);//-1
值得注意的是,这个方法不接受 函数作为参数,第二个参数也是可选的:它指定数组中的一个索引,即从哪里开始搜索。如果省略,则从头开始搜索。它也可以为负数,它代表对数组末尾的偏移量。
- 犀牛书随手记-06
- 犀牛书随手记-01
- 犀牛书随手记 -02
- 犀牛书随手记-03
- 犀牛书随手记-04
- 犀牛书随手记-05
- 重读犀牛书读书笔记
- js犀牛书
- 犀牛书1-50
- 犀牛。
- 随手记
- 随手记
- 随手记
- 随手记
- 随手记
- 随手记
- 随手记
- 随手记
- Spring核心组件
- eerTcirtemmyS.101
- 排序笔记_4(自上而下、自底而上的归并排序)
- C#中的增删改查
- poj 1050 To the Max & uva 108
- 犀牛书随手记-06
- 学习笔记--数论大杂烩 (看心情更新)
- 2186: [Sdoi2008]沙拉公主的困惑 线性筛素数+欧拉函数+乘法逆元
- 2016年的希望
- HDU 4185 Oil Skimming(二分图最大匹配)
- 04环信聊天界面 - 接收方cell的布局
- Java匿名内部类浅析
- C 语言笔记
- 部署 Office Web Apps(2)