《javascript权威指南》学习笔记 第七章 数组

7数组

数组索引仅仅是对象属性名的一种特殊类型函数

a=new Array()this

[]es5

a[-3.15]="i m -3.15"spa

"i m -3.15"prototype

a对象

[]排序

a[-3.15]索引

"i m -3.15"ip

a['-3.15']

"i m -3.15"

a[3]=function(){ console.log('this is a function!') }

function (){ console.log('this is a function!') }

a[3]

function (){ console.log('this is a function!') }

a[3]()

this is a function!

a['3']()


7.3 稀疏数组 就是包含从0开始的不连续索引的数组。若是是稀疏数组,length属性值大于元素的个数。能够用Array()构造函数或简单的指定数组的索引值大于当前数组长度来建立稀疏数组


7.4 数组长度

数组建立后 设置数组长度 将会删除 或增长相应的元素

a = [1,2,3,4,5];

a.length = 3; //a 为 [1,2,3]


能够用Object.defineProperty()让数组的length属性变成只读,将会禁止改变数组长度

a = [1,2,3];

Object.defineProperty(a,'length',{writable:false});

a.length=0; //a 不会改变

7.6 数组遍历

for()


data.foreach()

data.forEach(function(x){

console.log(x)

});


7.7 多维数组

Javascript不支持真正的多维数组,能够用数组的数组来近似。只要简单的使用两次[]操做符便可。

a=[];a[1]=[];


7.8 数组方法

Array.join() 方式将数组的全部元素转化为字符串链接在一块儿,返回生成后的字符串

var a=[1,2,3];

a.join() // '1,2,3'

a.join('') // '123'

a.join(' ')// '1 2 3'

a.join('-')// '1-2-3'


Array.reverse() 返回逆序数组


sort 以字母表顺序排序返回


concat() 链接自己和参数 若是参数是数组将链接数组


slice() 返回定义的数组的位置 -1表明最后一个元素


splice() 插入或删除元素 


第一个参数表明从第几个元素开始,第二个参数表明删除几个  随后的是指定插入到数组中的元素  返回删除的元素 元素自己发生改变


var a = [1,2,3,4];

b = a.splice(2,1,'a','b');

//b = [3]

//a=[1, 2, "a", "b", 4]


push 把元素添加到数组最后并返回数组的新长度

pop 删除元素最后一个元素并返回被删除的值


unshift 在数组的开头插入新元素 并返回新长度

shift 删除数组的第一个元素并将删除的值返回


toString 和join 不使用参数同样

toLocaleString 不懂


forEach 从头至尾遍历数组,为每一个元素调用指定函数 没法终止便利


map 将调用每个元素传给指定的函数并返回一个数组 若是是稀疏数组 也会是相同方式的稀疏数组


filter 返回的数组元素是调用的数组的一个本身  传递的函数是用来逻辑判断的 若是返回值为true或能转化为true的值 那么传递给断定函数的元素就是这个本身的成员

var a = [1,2,3,4,5,6];

a.filter(function(x){return x < 3})  // [1,2]


filter 会跳过稀疏数组中缺乏的元素 返回老是稠密的 能够用它来压缩稀疏数组 a.filter(function(x){return true})  


every 和 some 将元素应用指定的函数进行断定 返回布尔值 

every 调用断定函数 当全部元素传递给断定函数返回true 它才会返回true

some  当有函数返回true 它返回出  全部函数返回false 则会返回false


reduce reduceRight 使用指定的函数将数组进行组合 生成单个值


var a= [1,2,3,4,5]

var sum = a.reduce(function(x,y){return x+y},0)

若是不设定第二个参数 那么 传入指定函数的前两个参数将是数组的前两个元素的值


reduceRight 和reduce工做原理同样 不一样的是从数组索引的高到低处理数组


indexOf 全部真格数组中具备给定值的元素 返回找到的第一个元素的索引 第二个参数可选 是从数组中这个索引开始 没有找到返回-1 indexOf从头至尾 lastIndexOf 从后到前

找出全部匹配的元素的索引


function findall(a,x){

var results = [];

len = a.length,

pos = 0;

while(pos < len){

pos = a.indexOf(x,pos);

if (pos === -1) break;

results.push(pos);

pos = pos + 1;

}

return results;

}

7.1 数组类型

在 es5中能够这么写 

Array.isArray();


instanceof Array 不可靠


var isArray = Function.isArray || function(o){

return typeof o === 'object' &&

Object.prototype.toString.call(o) === '[object Array]';

};



7.12 做为数组的字符串


var s = 'test';

s.charAt(0);

s[1];

相关文章
相关标签/搜索