Set方法返回类数组对象( 伪数组) Set方法不允许有重复的值
var arr = [1, 2, 1, 2, 3];
let set = new Set(arr);
console.log([...set]); // [1, 2, 3]
console.log(set); //Set(3) {1, 2, 3} 类数组
set.add(4) //添加一个
console.log(set); //Set(4) {1, 2, 3, 4}多增加一个4
console.log(set.has(5)); //判断是否有5 false
// set.clear() 清空
// set.delete(4) //删除
console.log([...set]); // [1, 2, 3, 4] 数组形式
//引用数据类型去重不起作用
let arr = [{
name: '张三'
}, {
name: '张三'
}]
let set = new Set(arr)
console.log(set);
Map数据 key可以指定为对象也可以dom
<div id="div"></div>
let obj = {
name: '张三',
age: 156
}
let el = document.getElementById('div')
let map = new Map()
console.log(map); //Map(0) {size: 0}
map.set(obj, "aaa") //指定key为对象
console.log(map); //Map(1) {{…} *=>* 'aaa'}
map.set(el, 'div') //指定key为dom
console.log(map); //Map(2) {{…} => 'aaa', div#div => 'div'}
Symbol是es6提供一种新的基础类型数据 他声明的是一个唯一的数据 Symbol不是一个构造函数 所以不能写new Symbol
//用Symbol声明一个唯一值等下往obj里面添加
let a = Symbol('a')
let s = Symbol('s')
// console.log(a == s);false
var obj = {}
obj[a] = "德玛西亚"
obj[s] = "诺克萨斯"
console.log(obj);
//{Symbol(a): '德玛西亚', Symbol(s): '诺克萨斯'}
obj.a = "德玛西亚"
obj.a = "诺克萨斯" //只填加一个 下覆盖上面的
console.log(obj); //{a: '诺克萨斯', Symbol(a): '德玛西亚', Symbol(s): '诺克萨斯'}
startsWith方法检测字符串中是否以某个片段开头 如果包含返回true 否则返回false
var str = 'hello world'
let bool = str.startsWith('h')
console.log(bool); //true
endsWith方法检测字符串中是否以某个片段结束 如果包含返回true 否则返回false
var str = 'hello world'
let bool = str.endsWith('world')
console.log(bool); //true
repeat方法返回一个新字符串,表示将原字符串重复n次
var str = 'hello'
let str2 = str.repeat(2)
console.log(str2); //hellohello
padStart将字符串从前面补全到某个长度 第一个参数是要补全到的长度 第二个是要用什么片段补全 返回值是补全后的字符串
var str = 'abc'
let str2 = str.padStart(5, 'ad')
console.log(str2); //adabc
padEnd将字符串从后面补全到某个长度 第一个参数是要补全到的长度 第二个是要用什么片段补全 返回值是补全后的字符串
var str = 'abc'
let str2 = str.padEnd(5, 'de')
console.log(str2); //abcde
.trim清除字符串前后的空格
let str = ' 德玛西亚 '
console.log(str); // 德玛西亚 前后都有空格
let str2 = str.trim()
console.log(str2); //德玛西亚
trimStart清除字符串前面的空格
let str = ' 德玛西亚'
console.log(str); // 德玛西亚 前面有空格
let str2 = str.trimStart()
console.log(str2); //德玛西亚
trimEnd清除字符串后面的空格
let str = '德玛西亚 '
console.log(str); //德玛西亚 后面有空格
let str2 = str.trimEnd()
console.log(str2); //德玛西亚
matchAll()遍历指定的值,要使用正则/xxx/g,它返回一个迭代器,用for of遍历
let str = "abcasa"
let match = str.matchAll(/a/g)
console.log(match); //Iterator 返回一个迭代器
for (let a of match) {
console.log(a);
}
/*
使用for of 将包含'a'遍历出来
['a', index: 0, input: 'abcasa', groups: undefined]
['a', index: 3, input: 'abcasa', groups: undefined]
['a', index: 5, input: 'abcasa', groups: undefined] */
过滤替换字符
var str = '15305869472'
let str2 = str.replace(/0586/g, '****')
console.log(str2); //153****9472
es6分页怎么切割数组和this指向问题
1 es6 rest参数可以将剩余参数全部接受
function fn(name, ...rest) {
console.log(name); //张三
console.log(rest); // [16, '男']
}
fn('张三', 16, "男")
2 对象属性添加和删除
let obj = {
name: '张三',
age: 15
}
delete obj.age; //在对象里删除一个
obj.sex = '男' //给对象增加一个 如果对象里面没有就是添加,有就是赋值
console.log(obj);
3 在使用了严格模式的作用域内使用不声明是不允许的
'use strict'
a = 2;
console.log(a); //不写严格'use strict' 模式可以使用不声明,是全局变量在window上
4 name属性可以用来获取函数的名字
function fn() {}
console.log(fn.name); //fn
function fn666() {}
console.log(fn666.name); //fn666
5 this的指向问题
function fn() {
console.log(this); //普通函数this指向window
}
fn()
5.1 箭头函数的this永远指向箭头函数声明时所在的对象
let obj = {
info: {
name: '张三',
fn() {
//this指向调用函数的对象 谁调用的fn() //是info 打印出来里面有name fn()
console.log(this);
// setTimeout(function() {
// console.log(this); //不使用箭头函数 function 指向window
// obj.name = '李四'
// console.log(this); //function 指向window
// }, 1000)
//箭头函数的this永远指向箭头函数声明时所在的对象 //是info
setTimeout(() => {
console.log(this);
obj.name = '李四'
console.log(this);
}, 1000)
}
}
}
obj.info.fn() //指向调用函数的对象 //info 里面有name fn()
6 切割数组 //splice 会改变原数据 // slice 不会改变原数组
let list = [{
"uid": 1539789,
"mobile": "18761800011",
"avatar": "https:\/\/baijiayun-wangxiao.oss-cn-beijing.aliyuncs.com\/uploads\/avatar.jpg",
"nickname": "121z",
"status": 1,
"created_at": "1592223461",
"updated_at": "1592224051"
}, {
"uid": 1539786,
"mobile": "18761800012",
"avatar": "https:\/\/baijiayun-wangxiao.oss-cn-beijing.aliyuncs.com\/uploads\/avatar.jpg",
"nickname": "121",
"status": 1,
"created_at": "1592223031",
"updated_at": "1592224058"
}, {
"uid": 1539785,
"mobile": "16598745622",
"avatar": "https:\/\/baijiayun-wangxiao.oss-cn-beijing.aliyuncs.com\/uploads\/avatar.jpg",
"nickname": "\u5565\u4e8b",
"status": 1,
"created_at": "1592222732",
"updated_at": "1592224082"
}, {
"uid": 1539784,
"mobile": "18761800000",
"avatar": "https:\/\/baijiayun-wangxiao.oss-cn-beijing.aliyuncs.com\/uploads\/avatar.jpg",
"nickname": "\u5f20\u4e09\u75af",
"status": 1,
"created_at": "1592222732",
"updated_at": "0"
}, {
"uid": 1539768,
"mobile": "18435790000",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/FbVbPSmw9yKm5rhn8OUx3Av2HLlFuUFCzNWZD3WB.png",
"nickname": "pipi",
"status": 1,
"created_at": "1592215722",
"updated_at": "1592223738"
}, {
"uid": 1539767,
"mobile": "13233333333",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/avatar.jpg",
"nickname": "123",
"status": 0,
"created_at": "1592215623",
"updated_at": "1592223746"
}, {
"uid": 1539766,
"mobile": "12345678901",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/avatar.jpg",
"nickname": "123323",
"status": 1,
"created_at": "1592215568",
"updated_at": "1592219482"
}, {
"uid": 1539765,
"mobile": "11781781231",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/avatar.jpg",
"nickname": "hia",
"status": 0,
"created_at": "1592215567",
"updated_at": "1592223751"
}, {
"uid": 1539764,
"mobile": "13698545698",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/jDRI8OIeqtcKcwtx37re4NC2or4ARGNXcticUiq6.png",
"nickname": "212",
"status": 1,
"created_at": "1592215546",
"updated_at": "1592217842"
}, {
"uid": 1539763,
"mobile": "13526978456",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/XdQsU85SZCnakZBaJn0TjC5DFS87dPzFUj3JohL2.png",
"nickname": "1212",
"status": 1,
"created_at": "1592215422",
"updated_at": "1592215422"
}, {
"uid": 1539754,
"mobile": "15697856212",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/EuMTfekVXYCkFp1gIwsvgMYX3Uj9sZsnwwRZNnOj.png",
"nickname": "121333",
"status": 0,
"created_at": "1592212853",
"updated_at": "1592213495"
}, {
"uid": 1539753,
"mobile": "18888888888",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/PbaW7AwkOQV8OQrGR6Wa6lkv8vbdPxaJ3BGOSQ5I.jpeg",
"nickname": "ZhuZhuXia",
"status": 0,
"created_at": "1592212196",
"updated_at": "1592215708"
}, {
"uid": 1539751,
"mobile": "16455895622",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/BcAZREdBiudJa5yP3qBf4fb7qA9LAcCk0AmvGgWn.png",
"nickname": "sgdhs",
"status": 0,
"created_at": "1592211471",
"updated_at": "1592211856"
}, {
"uid": 1539749,
"mobile": "16854695765",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/avatar.jpg",
"nickname": "qwqw",
"status": 1,
"created_at": "1592211134",
"updated_at": "1592211134"
}, {
"uid": 1539747,
"mobile": "13556544589",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/avatar.jpg",
"nickname": "dhs",
"status": 1,
"created_at": "1592210639",
"updated_at": "1592210639"
}, {
"uid": 1539745,
"mobile": "13592659843",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/SYFiU4ynHjnph2mO70TU47LiDs5l8rRqHmZBG292.png",
"nickname": "\u5b59\u6684\u660e",
"status": 1,
"created_at": "1592203037",
"updated_at": "1592209832"
}, {
"uid": 1539744,
"mobile": "18555555555",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/qPLUfwlDqSExyFcZmP3cnQQKW8xMUN0kcND10n5n.png",
"nickname": "???",
"status": 0,
"created_at": "1592201979",
"updated_at": "1592207529"
}, {
"uid": 1539743,
"mobile": "13786456732",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/Llt2dKz9hIhoTPtfSY863QEvk3dYnll4UlfOxSFc.png",
"nickname": "\u6f02\u4eae\u56fd",
"status": 0,
"created_at": "1592201929",
"updated_at": "1592204762"
}, {
"uid": 1539742,
"mobile": "16532488596",
"avatar": "http:\/\/120.53.31.103:84\/uploads\/image\/2020-06-15\/YHsyO4j0a8bXtfVWD5DsgeeXcUlKfTeNULzD0X2F.png",
"nickname": "lop",
"status": 0,
"created_at": "1592200528",
"updated_at": "1592223701"
}]
function subList(pageNum = 0, pagesize = 10) {
// 1 splice会改变原数据 用法(从下标位置开始删,删除几个),
//这里是删除10条,总数据就剩9条了,list一共是19条数据
// return list.splice(pageNum, pagesize)
// 2 slice 不会改变原数组 就单纯截取数组用 用法(从下标哪里开始截取,截取几个)
return list.slice(pageNum, pagesize)
}
// let s = subList(); //这里实参可以传参,假如不传参,按照形参的默认值0-10
// console.log(s); //10条
// console.log(list); // 还是总数19条
// -----------------------------------
let s = subList(0, 5); //这里实参可以传参
console.log(s); //5条
console.log(list); // 还是总数19条
Array.from
1 Array.from 是一个可以将类数组对象转化为真正的数组的方法
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
// 1 Array.from 是一个可以将类数组对象转化为真正的数组的方法
let list = document.getElementsByTagName("li"); //得到的是HTMLCollection合集伪数组
console.log(list); //得到类数组,不可用数组方法 比如forEach循环会报错
list.forEach((item) => {
return console.log(item);//报错,因为是一个伪数组
})
console.log(list); //得到类数组,不可用数组方法 比如forEach循环会报错
list = Array.from(list) //将类数组转化为真正的数组
list.forEach(item => {
console.log(item); //转化后我可以使用数组循环方法
})
2 使用es6的new Set()方法,得到的也是类数组,可以用Array.from()将其转化为真正的数组
var arr = [1, 2, 1, 3, 2];
console.log(new Set(arr[2])); //报错 不可以使用数组方法
let setResult = Array.from(new Set(arr))
console.log(setResult[2]); //3
3 自定义的数组也可以转化成真正的数组
let obj = {
0: 1,
1: 2,
2: 3,
length: 3
}
let arr = Array.from(obj)
console.log(arr);
4 Array.of用来解决使用Array声明数组时 ,如果括号里参数只有一个,返回的是数组空数组长度,
用Array.of声明数组,参数只有一个不会是空数组的长度个数
//第1种声明数组方式
let arr = [1, 2, 3];
//第2种声明数组方式,使用Array声明数组时 ,如果括号里参数只有一个,那么就表示数组空数组长度
let arr1 = Array(1, 2, 3)
//例如:
// let arr = Array(3)
// console.log(arr); //[empty × 3]
//第3种声明数组方式
let arr2 = new Array(1, 2, 3)
//使用Array.of声明数组,参数只有一个不会是空数组的长度个数,这就是和Array的区别
// let arr = Array.of(3);
// console.log(arr); //[3]
5 find方法能够找到第一个满足条件的数组数据 并返回这个数据,找不到返回undefined
let arr = [1, 2, 3, 3]
let a = arr.find((item, index, ar) => {
return item > 2
})
console.log(a); //3
5.1 找到元素返回下标,找不到返回-1
let a = arr.findIndex((item, index, ar) => {
return item > 1
})
console.log(a);
5.2 fill填充替换数组 语法:(填充的值,从下标哪里开始,到下标哪里结束)
let arr = ['a', 'b', 'c']
arr.fill(7, 0, 2) //填充7,从0下标开始,到下标2接受,所以返回是77c
console.log(arr);// 7 7 "c"
5.3 keys方法以数组的形式返回对象的所有的key
var obj = {
name: '张三',
age: 16,
sex: '男'
}
console.log(Object.entries(obj)) //打印key和value
console.log(Object.keys(obj)); //['name', 'age', 'sex']
console.log(Object.values(obj)) //['张三', 16, '男']
6 Math.trunc //返回数字的整数部分和parseInt的区别一个是es6的数组方法一个是js的
let num = 12.123
let num2 = Math.trunc(num)
console.log(num2); //12
console.log(parseInt(99.336));//99
7 sign方法 如果参数是正数则返回1 如果是负数则返回-1 如果参数是0返回值也是0 如果是-0返回值也是-0
//如果参数不是数字 就会返回NaN 非数字的意思 not a number
console.log(Math.sign(9)); //1
console.log(Math.sign(-5)); //-1
console.log(Math.sign(0)); //0
console.log(Math.sign(-0)); //-0
console.log(Math.sign('好好学es6')); //NaN
8 Ts编译的时候就会提示语法错误,不需要向js一样运行起来才知道错误,ts将数据类型定义好,如果和"="后面不一样就会报错
//前面的bool是变量:后面是类型 = 如果等号后面的和定义的类型不同代码直接报错,
let bool:boolean = false
//定义的类型和等号类型不一样就,代码就爆红
let str:string = ''
let num:Number = 2