标准定义:一个存储元素的线性集合(collection),元素可以通过索引来任意存
取,索引通常是数字,用来计算元素之间存储位置的偏移量。
方法:
- indexOf() 返回第一个参数相同元素的索引
- lastIndexOf() 返回相同元素中最后一个元素的索引
- Join() 和 toString() 返回一个包含数组所有元素的字符串
- concat() 合并多个数组创建一个新数组
- splice() 截取一个数组的子集创建一个新数组
var itDiv = ["Mike","Clayton","Terrill","Raymond","Cynthia","Danny","Jennifer"];
var dmpDept = itDiv.splice(3,3);// 第一个参数是起始索引,第二个参数是截取长度
var cisDept = itDiv;
console.log(dmpDept); // Raymond,Cynthia,Danny
console.log(cisDept); // Mike,Clayton,Terrill,Jennifer
var nums = [1,2,3,7,8,9];
var newElements = [4,5,6];
nums.splice(3,0,newElements);(起始索引,需要删除元素的个数(添加时可以设为0),想要添加进去的元素)
console.log(nums);//1,2,3,4,5,6,7,8,9
- push() 将一个元素添加到数组末尾
- unshift() 将元素添加在数组的开头
- pop() 删除数组尾部的元素
- shift() 删除数组第一元素
- slice(begin, end) 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
- reverse() 将数组的顺序进行反转
- sort() 为元素是字符串的数组排序 (按照字典顺序排序)
迭代器方法,不生成新数组
- forEach() 接受一个函数作为参数,对数组中的每个元素使用该函数。
- every()接受一个返回值为布尔类型的函数,对数组中的每个元素使用该函数。如果对于所有的元素,该函数均返回true,则该方法返回true
function isEven(num) {
return num % 2 == 0;
}
var nums = [2,4,6,8,10];
var even = nums.every(isEven);
if (even) {
console.log("all numbers are even");
}
else {
console.log("not all numbers are even");
}
- some() 接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回true,
该方法就返回true。 - reduce() 接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。
function add(runningTotal, currentValue) {
return runningTotal + currentValue;
}
var nums = [1,2,3,4,5,6,7,8,9,10];
var sum = nums.reduce(add);
console.log(sum);//显示55
add(1,2) -> 3
add(3,3) -> 6
add(6,4) -> 10
add(10,5) -> 15
add(15,6) -> 21
add(21,7) -> 28
add(28,8) -> 36
add(36,9) -> 45
add(45,10) -> 55
function concat(accumulatedString, item) {
return accumulatedString + item;
}
var words = ["the ", "quick ","brown ", "fox "];
var sentence = words.reduce(concat);
console.log(sentence);
- reduceRight() 从右到左执行
- map() 返回一个新的数组,该数组的元素是对原有元素应用某个函数得到的结果。
function curve(grade) {
return grade += 5;
}
var grades = [77, 65, 81, 92, 83];
var newgrades = grades.map(curve);
console.log(newgrades);// 82, 70, 86, 97, 88
- filter() 和every() 类似传入一个返回值为布尔类型的函数。和every() 方法不同的是,当对数组中的所有元素应用该函数,结果均为true 时,该方法并不返回true,而是返回一个新数组,该数组包含应用该函数后结果为true 的元素
function CreateLinkNode(data, pre, next){
this.data = data;
this.preNode = pre;
if(this.preNode){
pre.nextNode = this;
}
this.nextNode = next;
}