博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS标准库和数组
阅读量:5061 次
发布时间:2019-06-12

本文共 3107 字,大约阅读时间需要 10 分钟。

1. String

1 2
String(s);    //'s',不加new 就直接输出字符串 new String(s)    //String{'s'},加new就输出一个对象

2. Number

1 2 3 4 5
Number(sss)    //报错,Error: sss is not defined Number('sss')    //NaN,NaN也是一个数字 Number(1)    //1 Number('1')    //1 new Number(123)    //Number{123},加new就变成对象

3. Boolean

1 2 3 4 5 6 7 8 9
六个false值 Boolean(false)    //false Boolean(undefined)    //false Boolean(null)    //false Boolean(NaN)    //false Boolean('') //false Boolean(0) //false 其他的全是true

 

除了对象(包括数组、函数)是复杂类型,其他数据类型都是基础类型

5. Object

1 2 3
Object(1);    //Number{1},前加new 和不加new是一样的 Object('s')    //String{'s'} Object()    //{}

6. Array

1. 用法

第一种用法:

1 2 3 4 5 6 7 8 9 10
let a = ['a','b'];    //['a','b'] let b = new Array('a','b');   //['a','b'] //上面两种写法效果一样 let a = Array(3)  //创建了一个长度为3的空数组 a.length //3 a[0] //undefined 0 in a //false let a = new Array(3) //和上面一样

 

第二种用法:
1 2
let a = Array(3,3);    //[3,3],length为2 //这和第一种一样的写法,功能却不同,不一致性,JS的垃圾之处

数组的含义:

数组就是对象,是拥有特殊原型链的对象,有Array.prototype的就是数组,没有的就不是数组。

3. 伪数组

1 2 3 4 5
let obj = {
0:'1', 1:'2', length:2; } //看起来像数组,但没有Array.prototype的,就是伪数组

 

arguments是伪数组

4. 数组的API

  1. forEach

    1 2 3 4 5 6 7 8
    var a = ['a','b','c']; a.forEach(function(x,y){
    console.log(y); //y是key console.log(x); //x是value }) //0 a //1 b //2 c
  2. sort,这个API会改变原值!只有这一个API会改变原值

    1 2 3 4 5 6 7 8 9 10
    var l = [2,3,1];      l.sort();    //[1,2,3],从小到大排序 l.sort(function(a,b){return a-b}) //[1,2,3],从小到大排序    l.sort(function(a,b){return b-a}) //[3,2,1],从大到小排序    //按成绩高到低排名 var students = ['小a','小b','小c']; var scores = { 小a: 59, 小b: 99, 小c: 80 }; students.sort(function(x,y){return scores[y] - scores[x]}) // ["小b", "小c", "小a"]
  1. join

    1 2 3 4
    var a = [1,2,3];     a.join('xx');    //'1xx2xx3' a.join();    //'1,2,3',默认是逗号
  2. concat

    1 2 3 4 5
    var a = [1,2,3]; var b = [3,4,5]; var c = a.concat(b);    //'1,2,3,3,4,5' var d = a.concat([]);    //'1,2,3',d和a的值一样,但d和a是两个数组,所以concat可以用来深拷贝数组
  3. map(映射)

    1 2 3 4 5
    var a = [1,2,3]; a.map(function(value,key){
    return value * 2; }) //[2,4,6]; a.map(value => value * 2); //[2,4,6]
  4. filter(过滤器)

    1 2 3 4 5 6 7 8 9 10 11 12 13
    var a = [1,2,3,4,5]; a.filter(function(value,key){
    return value >= 3; }) //[3,4,5] a.filter(function(value,key){
    return value % 2 === 0 ; }) //返回偶数,[2,4] a.filter(function(value,key){ return value % 2 === 0 ; }).map(function(value){ return value * value; }) //[4,16];
  5. reduce

    1 2 3 4 5 6
    var a = [1,2,3]; a.reduce(function(sum,n){
    return sum + n ; },0) //6,求和,0是初始值,第一次传给sum的就是0,sum是每次传进来的值,之后传给sum的是return里的值,n是遍历的数 a.reduce((sum,n) => sum + n ,0) //6,箭头函数的写法

map以用reduce表示:

1 2 3 4
a.reduce(function(arr,n){
arr.push(n*2); return arr; },[]) //[2,4,6]

 

filter也可用reduce表示:

1 2 3 4 5 6
a.reduce(function(arr,n){
if(n % 2 === 0){
arr.push(n) } return arr; },[])

 

 

  1. splice

    1 2 3
    array.splice(start) array.splice(start, deleteCount) array.splice(开始的位置, 删除的个数, 插入的对象1,插入的对象2, ...)
  2. slice

    1 2 3
    array.slice()  //保留完整数组 array.slice(4)  //保留4到最后的数组 array.slice(4,8)  //保留4到8以前的数组

转载于:https://www.cnblogs.com/raulfang/p/8795373.html

你可能感兴趣的文章
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
App.config自定义节点读取
查看>>
unity3d根据手机串号和二维码做正版验证
查看>>
二十六、Android WebView缓存
查看>>
django Models 常用的字段和参数
查看>>
linux -- 嵌入式linux下wifi无线网卡驱动
查看>>
SVN使用教程总结
查看>>
SQL中varchar和nvarchar有什么区别?
查看>>
OpenCV矩阵运算总结
查看>>
Java Build Practice 4:Extend and Invoke Ant API
查看>>
[转] Transformer图解
查看>>
FreeBSD方式安装 MAC OSX
查看>>
Linux 根文件系统制作
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>