数组函数相关

2019-02-25  本文已影响0人  苹果咏

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可以实现上面所有
上一篇下一篇

猜你喜欢

热点阅读