数组

JS中的数组来自window,是一个全局的对象,typeof的值是'object'。

创建数组:

1.Array(3):当只传一个值的时候,会生成一个长度为该数值的空数组。

2.Array(3,3):当传入的值大于1个的时候

3. new Array(3) 跟加不加new是一样的

4. new Array(3,3) 跟加不加new是一样的

5. a = [1,2,3] 最好用的

数组的本质

数组就是数据的有序的集合,但是从JS的角度来看,数组就是原型链中有Array.prototype的对象

见下图:

伪数组

有0,1,2,3,4,5,....n和lenght这些key的对象,但是原型链中没有Array.prototype

伪数组有:

arguments对象和document.querySelectAll('div')返回的对象

数组中的API

记几个比较重要的:

1.遍历数组

Array.prototype.forEach

var a = [1,2,3,4]
a.forEach(function(k,v){
console.log("key",k)
console.log("value",v)
})

2.排序数组

Array.prototype.sort

    var a = [1,2,3,4]
console.log(a.sort())
// 倒过来排
console.log(a.sort(function(x,y){
return y-x
}))

3.连接所有数组元素组成一个字符串

Array.prototype.join

    var a = [1,2,3,4]
console.log(a.join("-")) // 1-2-3-4

4.返回一个由当前数组和其它若干个数组或者若干个非数组值组合而成的新数组。

Array.prototype.concat

    var a = [1,2,3,4]
var b = [5,6]
console.log(a.concat(b)) // [1,2,3,4,5,6]

5.返回一个由所有数组元素组合而成的字符串。遮蔽了原型链上的

Array.prototype.toString

    var a = [1,2,3,4]
console.log(a.toString()) // 1,2,3,4

6.返回一个由回调函数的返回值组成的新数组

Array.prototype.map

    var a = [1,2,3,4]
console.log(a.map(function(x){
return x*2
})) // [2,4,6,8]

7.将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回。

Array.prototype.filter

var a = [1,2,3,4]    
console.log(a.filter(function(x){
if (x>=3){
return true;
}
})) //[3,4]

8.从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值。

Array.prototype.reduce

    var a = [1,2,3,4]
console.log(
a.reduce(function(sum,n){
return sum+n
},0)
) //10

如果想知道更详细的请见MDN:MDV数组

函数

函数的5种声明:

1.具名函数

2.匿名函数

3.具名函数赋值

4.window.Function

5.箭头函数(ES6的语法)

调用函数、this和arguments

f.call(asThis, input1,input2)
function f(){
'use strict'
console.log(this)
console.log(arguments)
return undefined
}
f.call(1,2,3) // this 为 1,arguments 为 [2,3]

使用 strict和不是使用strict的区别

当不传入任何参数的时候

作用域记住变量提示即可。

闭包:如果一个函数,使用了它范围外的变量,那么这个函数加这个变量就叫做闭包!

最新文章

  1. 加快XCode的编译链接速度(200%+)—XCode编译速度慢的解决方案
  2. Objective-C 中self.与_访问方式的区别
  3. phpexecel 导入导出,格式
  4. 转 android launch flow
  5. Android中view动画
  6. 设计模式之桥接模式(Bridge)
  7. 一个页面多Table多分页的问题
  8. POJ2526+简单几何
  9. 解决android手机sd卡安装pak后直接打开,按home键异常问题
  10. 黑马程序员-File类+递归的简单应用
  11. codevs2492 上帝造题的七分钟 2
  12. Bash环境配置文件
  13. linux新建用户登录不了
  14. DDD学习笔记1——分层架构
  15. pl/sql oracle数据库中文数据显示异常或者不能使用中文查询的解决办法
  16. JSP 页面跳转的实现方法
  17. NPOI 导入为table 处理excel 格式问题
  18. EventTrigger动态添加监听事件
  19. MailBee.NET
  20. The Number Games CodeForces - 980E (树, 贪心)

热门文章

  1. 后台生产验证码code和byte[]图片
  2. AppDomain.CurrentDomain.BaseDirectory项目目录相关操作
  3. PHP header函数设置http报文头示例详解以及解决http返回头中content-length与Transfer-Encoding: chunked的问题
  4. C语言 一些算法
  5. Using the JDBC Driver
  6. 【微信小程序】——wxss引用外部CSS文件及iconfont
  7. [Objective-C语言教程]日志处理(21)
  8. Android服务重启
  9. XorPay 个人支付平台增加 个人支付宝支付接口
  10. 图的最短路径---迪杰斯特拉(Dijkstra)算法浅析