Js学习(6) 标准库-Array对象

Array是Js的原生对象,同时也是一个构造函数,可以用它生成新的数组

用不用new结果都一样

var arr = new Array(2);
// 等同于
var arr = Array(2);

但是Array作为构造函数,行为很不一致,因此不建议使用它生成新数组,直接使用数组字面量是更好的方法

静态方法 

Array.isArray():返回一个布尔值,表明参数是否为数组,可以弥补typeof运算符的不足

实例方法 

valueOf():所有对象都有的方法,表示对该对象求值,数组里的返回数组本身

toString():也是通用方法,数组中返回数组的字符串形式

push():在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度

pop():删除数组的最后一个元素,并返回该元素

push,pop   栈

对空数组使用pop方法,不会报错,而是返回undefined

shift():删除数组的第一个元素,并返回该元素。

shift()方法可以遍历并清空一个数组,前提是元素不为0或任何布尔值为false的元素

push,shift   队列

unshift():在数组的第一个位置添加元素,并返回添加新元素后的数组长度,可接受多个参数

join():以指定参数作为分隔符,将所有数组成员连接为一个字符串返回,如果不提供参数,默认用逗号分隔,如果数组成员是undefined或null或空位,会被转成空字符串。

var a = [1, 2, 3, 4];

a.join(' ') // '1 2 3 4'
a.join(' | ') // "1 | 2 | 3 | 4"
a.join() // "1,2,3,4"

[undefined, null].join('#')
// '#'

['a',, 'b'].join('-')
// 'a--b'

通过call方法,这个方法也可以用于字符串或类似数组的对象

Array.prototype.join.call('hello', '-')
// "h-e-l-l-o"

var obj = { 0: 'a', 1: 'b', length: 2 };
Array.prototype.join.call(obj, '-')
// 'a-b'

concat():用于多个数组的合并。将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变

除了数组作为参数,concat也接受其他类型的值作为参数,添加到目标数组尾部

[1, 2, 3].concat(4, 5, 6)
// [1, 2, 3, 4, 5, 6]

如果数组成员包括对象,concat方法返回当前数组的一个浅拷贝,即一个引用 所以更改原对象,也会带来新数组的改变

reverse():颠倒排列数组元素,返回改变后的数组

slice(start ,end):用于提取目标数组的一部分,返回一个新数组,原数组不变,左闭右开

start以0开始,end默认为最后一个

如果slice方法的参数是负数,则表示倒数计算的位置

var a = ['a', 'b', 'c'];
a.slice(-2) // ["b", "c"]
a.slice(-2, -1) // ["b"]
上面代码中,-2表示倒数计算的第二个位置,-1表示倒数计算的第一个位置。

如果第一个参数大于等于数组长度,或第二个参数小于第一个参数,返回空数组

slice方法的一个重要应用,是将类似数组的对象转为真正数组

Array.prototype.slice.call({ 0: 'a', 1: 'b', length: 2 })
// ['a', 'b']

Array.prototype.slice.call(document.querySelectorAll("div"));
Array.prototype.slice.call(arguments);
上面代码的参数都不是数组,但是通过call方法,在它们上面调用slice方法,就可以把它们转为真正的数组。

  

 待续:

 

  

 

 

猜你喜欢

转载自www.cnblogs.com/wtblogwt/p/10050255.html
今日推荐