[关闭]
@windyBaby 2016-09-27T10:09:34.000000Z 字数 1717 阅读 586

数组

JavaScript MDN Array


一、数组的定义

MDN:在 JavaScript 中 Array 是一个用来构造数组的全局对象,它是一个高阶的类似有序列表的对象。

  1. typeof([1,2,3]); //"object"

二、创建一个数组

1. 普通数组

方法一

  1. var arr=[1,2,3];

方法二

  1. var arr=[];
  2. arr[0]="a";
  3. arr[1]="b";
  4. arr[2]="c";

2.特殊数组

任何类型的数据,都可以放进数组

  1. var arr=[
  2. {a:1},
  3. [1,2,3],
  4. function hello(){alert("hello")}
  5. ];
  6. arr[0] // Object {a: 1} 对象
  7. arr[1] // [1, 2, 3] 数组
  8. arr[2] // function hello(){alert("hello")} 函数

多维数组

  1. var arr=[[1,2],[3,4]];
  2. arr[0][1]; //2
  3. arr[1][1]; //4

当然你也可以直接创建一个空数组,直接指定某一位

  1. var arr=[];
  2. arr[1000]='a';
  3. console.log(arr[1000]); //a

三、length属性

length数量=成员数+1

  1. ['a', 'b', 'c'].length // 3

数组一定有length属性,length是动态的,可以增加也可以删减

  1. arr.length=2; //就会变成只有两个成员的数组
  2. arr.length=5; //未定义的位置是undefined

将数组清空的一个有效方法,就是将length属性设为0。

  1. arr.length = 0;
  2. arr // []

数组的空位(hole)并不影响length

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

四、数组的常用方法

(一)基础方法

1.反转数组

  1. arr.reverse();

2.确定元素第一次出现的索引值

  1. arr.indexOf(searchElement[, fromIndex = 0])

3.确定元素最后一次出现的索引值

  1. arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])

4.添加元素到数组的末尾

  1. arr.push("orange");

5.删除元素末尾的数组

  1. arr.pop();

6.删除数组开头的元素

  1. arr.shift();

7.将元素添加到数组的开头

  1. arr.unshift("strawberry");

8.slice

slice方法浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。

  1. arr.slice([begin[,end]]);
  2. //[ ,...n ] 表示前面的项可重复 n 次。每一项由逗号分隔。

9.splice

splice() 方法用新元素替换旧元素,以此修改数组的内容。

  1. array.splice(start, deleteCount[, item1[, item2[, ...]]]);

10.concat

concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回。

  1. var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
  2. //除了concat可以合并数组外,还可以
  3. Array.prototype.push.apply(a, b)
  4. // 或者
  5. a.push.apply(a, b)

11.join

join() 方法将数组中的所有元素连接成一个字符串。

  1. str = arr.join([separator = ','])
  2. //用字符串的split方法可以再分开

12.sort

sort() 方法对数组的元素做原地的排序,并返回这个数组。 sort 排序可能是不稳定的。默认按照字符串的Unicode码位点(code point)排序。

  1. arr.sort([compareFunction])

如果返回结果是数组的话还可以链式调用

思考题:把字符串“2-3-1"和"33-11-22”一起变成“33+22+11+3+2+1”;

(二)遍历

  1. forEach()、map()、filter()、some()、every()、reduce()、
  2. reduceRight()
  3. //call apply

五、排序算法

冒泡排序、选择排序、插入排序、合并排序、快速排序

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注