美文网首页
JS标准库/数组API

JS标准库/数组API

作者: efho | 来源:发表于2020-09-03 20:15 被阅读0次

    JS内存有stack、heap。stack中有global/window对象,其是一个hash。其中有标准库(object、string、number等)

    new Object(1) 和 Object(1)没什么区别  但是String(1)和new String(1)不同

    let f = ['1', '2'] 等价于 let f = new Array('1','2')

    var a = Array(3)  length = 3.  var a = Array(3,3)   {0:3, 1:3 ,length:2}

    第一类  基本类型Number, String,Boolean.

    Number()  => 基本类型  new Number()  =>  对象

    第二类  复杂对象Object(包括Array,Function)

    Object() => 对象     new Object() => 对象       加不加new一样


    var f = function(a,b){return a+b}  等价于 var f = (new)Function('a', 'b', 'return a+b')   奇葩。。


    数组Array

    var a = [1,2,3] ;    a.xxx = 'xxx'  也可以,但是a.length还是为3

    for(let i=0; i<a.length;i++){    只有三项

    }

    for(let key in a){   有四项。

    }

    伪数组:

    原型链__proto__没有指向 Array.prototype,没有push方法。 arguments是伪数组(目前先接触这个)

    function f(){
    console.dir(arguments)

    }        

    执行f(1,2,3)会打印出来。  

    数组API  forEach

     a = ['a', 'b', 'c']

    a.forEach(function(x,y){

    console.log('value', x)

    console.log('key',y)

    }

    )

    打印出 所有value 和 key

    也可以只一个

    a.forEach(function (item) {

            console.log('item', item)

        }

    )

    数组API  a.sort() (注意,sort会改变原值!!!!

    快速排序。

    a = []

    a.sort(   function(x,y){return x-y}     )       升序

    a.sort(   function(x,y){return x-y}     )       降序

    hash = {

    'a': 100,

    'b': 300,

    'c':200

    }                      a.sort(    function(x,y){  return hash[x] -hash[y]  }    )  结果: ['a', 'c', 'b']   正序

    数组API  a.join()

    a = [1,2,3]

    a.join('aa')  => "1aa2aa3"

    在数组之间加东西变字符串。   a.join(',') =  a+''  = a.toString() = "1,2,3"

    数组API  a.concat()

    a = [1,2]     b = [3,4]   

    常规用法: a.concat(b)  =>  a = [1,2,3,4]

    另一个好用法->深拷贝生成新数组。 

    var b = a.concat([])

    b = [1,2] 

    a===b -> false   新开辟了一块内存,stack中a、b地址指向不同

    数组API a.map()

    a.forEach 和 a.map功能上一样,但是a.map有返回值 (除了遍历,还会收集)以前多少项,新数组多少项。也可以返回对象

    a = [1,2,3]

    a.map(function (value, ket){

    return value*2

    })

    或者箭头函数形式: a.map(value => value*x) 与上面等同 注意这是隐式返回(我不太喜欢

    示例2:

        let array = messages.map((item) => {

            return item.attributes

        })

    数组API a.filter

    a = [1,2,3,4,5,6,7]

    a.filter( function (value, key){

    return value >= 5

    })      得到:[5,6,7]

    数组API a.reduce

    https://www.cnblogs.com/alex1504/p/10993538.html

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

    伪数组

    arguments、DOM API elements

    数组push

    数组里扔东西   texts = []

    for(i;;i++){  texts.push(nodes[i].textContent   )}

    数组 textContent

    获取字符串内容

    相关文章

      网友评论

          本文标题:JS标准库/数组API

          本文链接:https://www.haomeiwen.com/subject/eyfvsktx.html