前端宝典【犀牛书】06(数组)

数组

  数组的索引是小于于2^32且非负的整数;

  数组索引访问属性比对象访问属性要快;

创建数组

  字面量创建数组var b=[2,23]

  构造函数创建数组 var a=new Array()

  稀疏数组:稀疏数组比稠密数组更慢,内存利用率高,与常规对象查询时间一样长

      a=new Array(5);

      a=[ ],a[100]=0;

       可以用in来检测是否稀疏数组

 数组索引为i,length为i+1

 当改变length时,将删除索引值大于等于n的元素

  创建一个数组a,

  Object.defineProperty(a,"length",{wirtable:false})

  a.length=0就不可修改

 

  多维数组(二维为列,就是数组元素里面包含数组)

// 创建 一个 多维 数组

var table = new Array( 10); // 表格 有 10 行

for( var i = 0; i < table. length; i++) table[ i] = new Array( 10); // 每 行 有 10 列 // 初始化 数组

for( var row = 0; row < table. length; row++) {

  for( col = 0; col < table[ row]. length; col++) {

    table[ row][ col] = row* col;

   }

} // 使用 多维 数组 来 计算( 查询)

5* 7 var product = table[ 5][ 7]; // 35

 

delete运算符在数组中不改变数组长度,pop(),push(),shift(),unshift()会改变数组长度

循环遍历一般用for循环,for/in会直接排除不存在的索引,也会带来继承的属性遍历;并且不能保证遍历顺序是按索引来,而有可能是按创建顺序

 

数组方法

jion(与不带参数的toString功能相同):

    eg:var a=[1,2,3]

       a. join(""); // => "123"

reverse:生成逆序数组,(改变数组)

sort:进行数组排序按字母顺序,(改变数组)

concat:合并数组不会递归数组,最外层的数组全都可去

slice:(startIndex,endIndex)包头不包尾部,可以是负数,最后一位表示为-1

splice(startIndex,deleteLength,元素1,元素2),(改变数组)

pop()返回删除元素,push()返回数组长度,shift(),unshift()(改变数组)

es5数组方法

  forEach:不可被中断,没有返回值

  map:有返回值,返回新数组(稀疏数组不改变稠密度)

  filter:返回条件转换为true的元素(稀疏数组改变稠密度)

  every返回第一个false,some返回第一个true

    eg:在空数组上调用时, every() 返回 true, some() 返回 false。

  reduce, reduceRight

    eg:不调用简化函数

    数组中一个元素,没初始值;数组中没有元素,有初始值;

  indeOf(元素,startIndex),找到返回找到的第一个元素的索引,没找到返回-1

 

Array.isArray([ ])实现方案 

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

  return typeof o === "object" && Object. prototype. toString. call( o) === "[object Array]";

};

 

类数组对象 var a = {"0":" a", "1":" b", "2":" c", length: 3};

 

字符串作为数组,用Fuction.call实现对数组方法调用

s = "JavaScript" Array. prototype. join. call( s, " ") // => "J a v a S c r i p t"

Array. prototype. filter. call( s, // 过滤 字符串 中的 字符

  function( x) { return x. match(/[^ aeiou]/); // 只 匹配 非 元音 字母 }

).join("") // => "JvScrpt"

注:字符串为不可变值push()、 sort()、 reverse() 和 splice() 等 数组 方法 会 修改 数组

posted @ 2022-10-06 15:00  肥瘦皆宜  阅读(48)  评论(0编辑  收藏  举报