一、Array
1. 定义一个Array
let a = ['a', 'b']
let a = new Array('a', 'b')
2. var a = new Array(3)与var a = new Array(3,3)的区别
new Array(3)
生成一个长度为3的空数组,new Array(3,3)
生成一个第0项和第一项都是3,长度为2的数组
3. var a = [1, 2, 3] 与 var obj = { 0: 1, 1: 2, 2: 3, length: 3}的区别
a
中的__proto__
指向 Array.prototype
,而obj
中的 __proto__
指向Object.prototype
4. 伪数组
形如{0:1, 1:2, 2:3, 3:4, length:4}
,但__proto__
不指向Array.prototype
的对象。在JS中,已知唯一的一个伪数组是函数参数[arguments]
5.foreach()
a.foreach(function(x,y){})
,foreach()接收两个参数,第一个是数组的value
,第二个是数组的key
。
6.sort(),sort是原地排序,会改变原值
-
sort()
函数默认从小到大排序 -
sort(function(x,y){return x-y})
从小到大排序 -
sort(function(x,y){return y-x})
从大到小排序
7.join()
-
a.join()
默认用逗号连接 -
a.join("方方")
用括号里的内容连接
8.concat()
-
a.concat(b)
连接两个数组,并返回一个新的数组
-
var b = a.concat([])
用来复制一个数组。因为concat()
会返回一个新的数组,所以b
不等于a
9.map()
map()
会对数组中的每一个元素执行括号内的函数并返回结果。
注:返回的数组中的元素取决于括号内函数的返回值,与原数组的元素没有关系
10.filter()
filter(fn)
用括号内的函数对数组内容进行筛选,返回true
的留下,false
被筛选掉
11.reduce()
a.reduce(functin(prev, curr){ return prev+curr}, 0)
,reduce()接收两个参数,第一个参数是函数(该函数接收两个参数,第一个参数是上一次运算的结果,第二个参数是当前的数组元素),第二个参数是运算的初始值,即prev
的初始值。
-
reduce()
的一些神奇操作
二、Function
1. 声明函数
(1) var f = function(){}
//具名函数
(2) function(){}
//匿名函数
(3) var f = new Function('param1', 'param2',...,'functionBody')
//用构造函数来声明