数组是比较简单的内容,这里介绍数组经常使用的操做。
数组的建立和初始化很是简单,你能够经过var arr = new Array()
或者var arr = new Array('a','b','c')
来建立一个数组。固然也能够简单的var arr = [];
这也是最一般的用法。vue
须要在数组末端追加元素,咱们能够简单的使用number[number.length] = 10;
或者位面一般用到的number.push(10)
。若是是在数组起始端添加元素,位面可使用number.unshift(0)
.
相应的在数组中删除元素,咱们能够用number.pop()
(从末端删除),或者number.shift()
(从起始端删除)。还有咱们也能够经过设置数组的长度来删除数组,好比var number = [1,2,3,4];number.length=3;
来删除最后一个元素。
这里还有一个很经常使用的方法来添加,删除和修改元素,同时它也能够克隆数组。这个就是splice.
var number = [1,2,3];
number.splice(1,1,4);//修改index为1的以后1位元素为4
number.splice(1,1,4);//将4添加到index为1的元素后面
number.splice(1,1);//删除index为1后1位的元素
var clone = number.splice(0);//用于克隆数组数组
concat--链接2各或者更多数组,并返回结构。函数
every--对数组中的每一项运行给定函数,若是该函数对每一项都返回true,则返回true.code
filter--对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。对象
forEach--对数组中的每一项运行给定函数。排序
join--将全部的数组元素链接成一个字符串。索引
indexOf--返回第一个与给定参数相等的数组元素的索引,没有则返回-1ip
lastIndexOf--返回在数组中搜索到的与给定参数相等的元素的索引里最大的项。字符串
map--对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。get
reverse--颠倒数组中元素的顺序。
slice--传入索引值,将数组对应索引范围内的元素做为新数组返回。
some--对数组中的每一项运行给定函数,若是任一项返回true,则返回true。
sort--按照字母顺序对数组排序,支持传入指定排序方法的函数做为参数。
toString--将数组做为字符串返回
valueOf--将数组做为字符串返回
能够经过concat方法来合并多个数组。concat方法能够向一个数组传递数组,对象或者元素。数组会按照该方法传入的顺序链接指定数组。
var zero = 0; var positive = [1,2,3]; var negative = [-3,-2,-1]; var numbers = negative.concat(zero,positive);
前面介绍了不少用于迭代数组的函数。下面来举一个例子,有一个数组,它是从1到10.找出数组中的偶数。
var isEven = function(x){ console.log(x); return (x%2==0) ? true : false; } var numbers = [1,2,3,4,5,6,7,8,9,10];
首先咱们尝试用every.它会迭代数组中的每个元素,直到返回false。
numbers.every(isEven);
这样数组numbers的第一个元素是1,它不是偶然,函数返回false。every执行结束了。
而后在看some.它与every相似,只是它运行到true以后中止执行。这样当执行到2的时候,函数返回true便中止了。
numbers.some(isEven);
再看map函数,它会返回每一个元素处理后的结果。
var result = numbers.map(isEven);
结果是[false,true,false,true,false,true,false,true,false,true].
还有一个filter方法,它返回的新数组由使函数返回true的元素组成:
var eventNumbers = numbers.filter(isEven);
这样evenNumbers数组中的元素都是偶数[2,4,6,8,10].
最后再看一下reduce方法。它接受一个函数做为参数,这个函数后4个参数:previousValue,currentValue,index,array.这个函数会返回一个将被叠加到累加器的值,reduce方法中止执行后会返回这个累加值。若是是对一个数组中的全部元素求和,这个方法颇有用。
对于排序咱们可使用sort方法,默认的sort方法会对数字按大小排序,对字符串按字母表排序,好比
numbers.sort()
或者能够自定义排序方法
numbers.sort((a,b)=>{return a-b});
对于自定义字符串的排序
var names = ['Ana', 'ana', 'john', 'John']; names.sort(function(a,b){ if(a.toLowerCase()<b.toLowerCase()){ return -1; } if(a.toLowerCase()>b.toLowerCase()){ return 1; } return 0; }
参考书籍:Learning Javascript Data Structures and Algorithms
推荐一个找vue,angular组件的轮子工厂