常用数据结构:数组。简要介绍数组的常用方法。
数组方法
方法名 | 描述 |
---|---|
concat | 连接2个或更多数组,并返回结果 |
every | 对数组中的每一项运行给定函数,如果每一项都返回true,则返回ture |
filter | 对数组中的每一项运行给定函数,返回ture的项组成的数组 |
forEach | 对数组中的每一项运行给定函数,无返回值 |
jion | 数组转字符串 |
indexOf | 查找数组元素,找到返回索引,没有找到则返回-1 |
lastIndexOf | 查找数组元素的索引里最大的值 |
map | 对数组中的每一项运行给定函数,返回函数调用的结果组成的数组 |
reverse | 颠倒数组 |
slice | 截取数组 |
some | 对数组中的每一项运行给定函数,如果任一项都返回true,则返回ture |
sort | 按字母顺序排序,可传入排序方法函数 |
toString | 将数组作为字符串返回 |
valueOf | 同toString |
reduce | 4个参数的函数作为参数 previousValue currentValue index array,该函数会返回一个被叠加到累加器的值 |
- 迭代器函数
every、 some、 forEach、 map、 filter、 reduce
var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
numbers.reduce(function(pre,curr,index,arr){
return curr;
})
//15
搜索和排序
1. 排序
1). sort
var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; numbers.sort(function(a,b){return b-a}); //逆序 numbers.sort(function(a,b){return a-b}); //顺序
2). 自定义排序
对年龄进行顺序排序
var friends = [ {name:'John', age: 30}, {name:'Ana', age: 20}, {name:'Chris', age: 25} ] function compareAge(a, b){ if(a.age < b.age){ return -1; } if(a.age > b.age){ return 1; } return 0; } console.log(JSON.stringify(friends.sort(compareAge))); //[{"name":"Ana","age":20},{"name":"Chris","age":25},{"name":"John","age":30}]
3). 字符串排序
字符串排序时是根据ASCII值进行比较的
2. 搜索
indexOf、 lastIndexOfvar numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; console.log(numbers.indexOf(10)); //9 console.log(numbers.indexOf(100)); //-1 numbers.push(10); console.log(numbers.lastIndexOf(10)); //15 console.log(numbers.lastIndexOf(100)); //-1
输出数组为字符串
jion、toString
位操作符
位操作符 | 描述 |
---|---|
& | 与 |
\ | 或 |
~ | 非 |
^ | 异或 |
<< | 左移 |
>> | 右移 |
console.log(5 & 1);\\ 1
console.log(5 | 1);\\5
console.log( ~5 ); \\-6
console.log(5 ^ 1);\\4
console.log(5 << 1);\\10
console.log(5 >> 1);\\2
bool转换
数值类型 | 布尔值 |
---|---|
undefined | false |
null | false |
true | true |
false | false |
数字 | 0、NaN为false 其它为真 |
字符串 | 空字符串为false |
对象 | true |
原型
使用原型方法可以节约内存和降低实例化的开销。最好在声明公共方法时使用基于原型的方法。生成私有方法时用在类定义时内部声明的方式,这样其他实例不会访问到这个方法。