JS不一致性
Array(3)表示的是长度length
image.png
Array(3,3)又不是length了,表示数组中两项数据
image.png
所以Array()大于一项的都是表示数组当中的数
函数的几种定义方法
function S(a,b){
return a+b
}
S(1,2)//3 具名函数
var f = function (a,b){
return a+b
}
f(1,2)//3 匿名函数
var r = new Function ('a', 'b', 'return a+b')
r(1,2)//3
var r = Function ('a', 'b', 'return a+b')
r(1,2)//3 不加new也是可以的
forEach()
var array1 = ['a', 'b', 'c'];
array1.forEach(function(element) {
console.log(element);
});
//a
//b
//c
var array1 = ['a', 'b', 'c'];
array1.forEach(function(a,b) {
console.log(b+":"+a);
});
//0:a
//1:b
//2:c
sort()
var a=[6,5,7,8,8,3,5,4,5,6,7]
undefined
a.sort()
//(11) [3, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8]
a.sort( function(x,y){return x-y} )
//(11) [3, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8]
a.sort( function(x,y){return y-x} )
//(11) [8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 3]
join()
var a=[1,2,3]
a.join('7')
//"17273"
/*a(3) […]
0: 1
1: 2
2: 3
length: 3
<prototype>: Array []*/
//join是在每一项中间都加入这个数,而且不改变原数组
concat()
var b=[45,4,24,65,3]
a.concat(b)
//Array(8) [ 1, 2, 3, 45, 4, 24, 65, 3 ]
//concat为合并
map()
遍历,类似于forEach
a.map(function(value, key){return value*2})
//Array(3) [ 2, 4, 6 ]
//使用箭头函数
a.map(value => value*10)
//Array(3) [ 10, 20, 30 ]
//map可以return,forEach是不能return的
filter()
过滤
a.filter(function(value,key){return value>1})
//Array [ 2, 3 ],过滤,只剩下大于1的
a.filter(function(value,key){return value%2===0})
//Array [ 2 ],除以2的余数等于0
a.filter(function(value,key){return value%2===0}).map(function(value){return value*value})
//Array [ 4 ],map和filter同时
reduce()
reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
a.reduce(function(sum,n){return sum+n},0)
// 6,后面这个0是sum的初始值
a.reduce((sum,n)=> sum+n ,0)
a.reduce(function(arr1,n)
{
if(n%2===0){
arr1.push(n)
}
return arr1
},[])
//Array [ 2 ],reduce表示filter,reduce可以实现上面所有
网友评论