ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言
数组方法
Array.from(类数组,?ck)
功能:把类数组转化成真正的数组 类数组:length就靠谱
let lis = Array. from ( document. querySelectorAll ( 'li' ) , function ( item) {
return item. innerHTML
} ) ;
console. log ( lis)
let [ name, pwd] = document. querySelectorAll ( 'input' ) ;
console. log ( Array. isArray ( lis) ) ;
let obj = {
name: 'name' ,
age: 'age' ,
length: 2
} ;
console. log ( Array. from ( obj) )
Array.slcie.call() //转数组 [].slice.call(); //转数组
Array.of(一组数据)
功能:把一组数据转成数组 弥补了Array()不足 如果没有参数就返回空数组
let arr4 = Array. of ( 1 , 2 , 3 , 4 ) ;
console. log ( arr4) [ 1 , 2 , 3 , 4 ]
console. log ( Array. of ( 10 ) )
console. log ( Array ( 10 ) )
conpyWidthin
Array.prototype.copyWithin(target,?startIndex=0,?endIndex=this.length) 功能:替换数组 修改原数组 不包括最后一个 target:从该位置开始替换
将3 号位复制到0 号位
[ 1 , 2 , 3 , 4 , 5 ] . copyWithin ( 0 , 3 , 4 )
let arr6 = [ 'a' , 'b' , 'c' , 'd' ] ;
console. log ( arr6. copyWithin ( 0 , 2 ) ) ;
console. log ( arr6. copyWithin ( 1 , 3 ) ) ;
console. log ( arr6. copyWithin ( 1 , - 2 , - 1 ) )
startIndex:
endIndex
find
Array.prototype.find(function(item,index,array){}) 功能:查找数组第一个匹配项 没查到:undefined
[ 1 , 5 , 10 , 15 ] . find ( function ( value, index, arr) {
return value > 9 ;
} )
findIndex
Array.prototype.findIndex(function(item,index,array){}) 功能:查找数组第一个匹配项的下标 没查到:-1
var c = [ 1 , 3 , 4 , 55 , 7 ] . findIndex ( function ( item, index, array) {
return item == = 5 ;
} )
console. log ( c)
fill
Array.prototype.fill(填充的内容,?startIndex,?endIndex) 功能:填充数组 不包括最后一项
console. log ( arr6. fill ( { name: 'lili' } , 1 , 4 ) ) ;
[ 'a' , 'b' , 'c' ] . fill ( 7 )
第一个参数为待填充的值,第二和第三参数可选,分别表示填充的起始和结束位置( 不包括) 。
[ 'a' , 'b' , 'c' ] . fill ( 7 , 1 , 2 )
includes
Array.prototype.includes(检测的元素) 功能:查找数组是否包含指定字符 返回值:Boolean
[ 1 , 2 , 3 ] . includes ( 2 ) ;
[ 1 , 2 , 3 ] . includes ( 4 ) ;
[ 1 , 2 , NaN] . includes ( NaN) ;
let arr9 = [ NaN]
console. log ( arr9. includes ( NaN) ) ;
indexOf() NaN的操作
let arr9 = [ NaN]
console. log ( arr9. indexOf ( NaN) )
flat
Array.prototype.flat(?num=1) 功能:把嵌套的数组拉平 扁平化处理 num:拉平的层级
let arr10 = [ 1 , 2 , 3 , 4 , [ 5 , [ 6 ] ] ] ;
flatMap
flatMap()方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。
相当于 [ [ 2 , 4 ] , [ 3 , 6 ] , [ 4 , 8 ] ] . flat ( )
[ 2 , 3 , 4 ] . flatMap ( ( x) = > [ x, x * 2 ] )
entries()、keys()、values()
用于遍历数组,可以用for…of循环进行遍历。区别是keys()是对键名的遍历、values是对键值的遍历、entries()返回的是数组,也是对键值对的遍历。
for ( let index of [ 'a' , 'b' ] . keys ( ) ) {
console. log ( index) ;
}
for ( let elem of [ 'a' , 'b' ] . values ( ) ) {
console. log ( elem) ;
}
for ( let [ index, elem] of [ 'a' , 'b' ] . entries ( ) ) {
console. log ( index, elem) ;
}
数组排序
var arr = [ 1 , 3 , 4 , 5 , 7 , 2 , 33 ] ;
function sort ( arr) {
for ( var i = 0 ; i < arr. length; i++ ) {
for ( var j = 0 ; j < arr. length - i - 1 ; j++ ) {
var temp;
if ( arr[ j] > arr[ j + 1 ] ) {
temp = arr[ j] ;
arr[ j] = arr[ j + 1 ] ;
arr[ j + 1 ] = temp;
}
}
}
return arr;
}
console. log ( sort ( arr) ) ;
数组对象排重 new Set()
;
let arr = [ 3 , 5 , 2 , 2 , 5 , 5 ] ;
let unique = [ . . . new Set ( arr) ] ;
console. log ( unique) ;
数组去重排序 new Set sort
let arr = [ 5 , 9 , 1 , 5 , 1 , 80 , 2 , 5 ] ;
arr = Array. from ( new Set ( arr) ) ;
arr. sort ( ( a, b) = > { return a- b; } ) ;
对象的方法
defineProperty
enumerable:
为true时,可枚举(就是可以用for in循环):不可枚举(不能for循环)
writeable
:
writeable
configurable:
getOwnPSropertyDeScriptor
表示获取对象的自身属性的一个描述,同时也能获取数据属性。
例子:
const obj1 = {
name: "zs" ,
age: 12
}
Object. defineProperty ( obj, "sex" , {
value: "man" ,
enumerable: true ,
writable: true ,
configurable: true ,
set: function ( ) {
obj[ "sex" ] = "man"
} ,
get: function ( ) {
return "man" ;
}
get set不能和以上属性共存
get 会在获取属性时执行 console. log ( obj. sex)
set会在设置属性值时候执行obj[ "sex" ] = "man"
} )
obj1. sex = "mai"
delete obj. sex;
Object. getOwnPropertyDescriptor ( obj, "name" ) 获取对象自身属性的一个描述 获取四个数据属性
console. log ( obj)
const obj2 = {
sex: "da"
}
const obj = Object. assign ( { } , obj1, obj2) 合并可枚举属性
Object. is ( val1, val2)
访问属性
set
set:会在设置属性时执行 obj[“sex”]=“man”,
get
get:会在获取属性时执行 console.log(obj.sex);
assign
is
delte
注意点:访问器属性和数据属性之间两者不能共存.如果共存之间会报错。