JS标准库/数组API

2020-09-03  本文已影响0人  efho

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

获取字符串内容

上一篇下一篇

猜你喜欢

热点阅读