JS-内置对象

 1、Symbol

Symbol是ES6新增的基本数据,它是一个内置全局函数,生成一个独一无二的数据

let a=Symbol(20)
let b=Symbol(20)
console.log(a,b,a==b)  //Symbol(20) Symbol(20) false

2、Map

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值,Map没有语法糖

Map与Object相似,但也是有区别的:

(1)一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。

(2)Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。

(3)Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。

(4)Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。

var a=["well"]
var myMap = new Map([["name", "Li"], ["age", 20], ["addr", "重庆"],[a,99]]);

//get获取
console.log(myMap.get("name"))  //Li
console.log(myMap.get("addr"))  //重庆


//set更新
var re1=myMap.set("life","good")
console.log(myMap)  //Map(5) {'name' => 'Li', 'age' => 20, 'addr' => '重庆', Array(1) => 99, 'life' => 'good'}
var re2=myMap.set("name","Yu")
console.log(myMap)  //Map(5) {'name' => 'Yu', 'age' => 20, 'addr' => '重庆', Array(1) => 99, 'life' => 'good'}

//delete删除
var re3=myMap.delete(a)
console.log(myMap)  //Map(4) {'name' => 'Yu', 'age' => 20, 'addr' => '重庆', 'life' => 'good'}
var re4=myMap.delete("well")
console.log(myMap)  //Map(4) {'name' => 'Yu', 'age' => 20, 'addr' => '重庆', 'life' => 'good'}


//clear清空
var re5=myMap.clear()
console.log(myMap)  //Map(0) {size: 0}

对Map进行遍历

var myMap=new Map([["a",1],["b",2]])
for(var key of myMap.keys()){
console.log(key)  //a  b
}

for(var [key,value] of myMap){
console.log(key+"="+value)  //a=1  b=2
}

myMap.forEach(function(key,value){
console.log(key+"="+value)  //1=a  2=b
})

Map转数组(必须是二维数组):Array.from()静态方法

var arr = [["name1", "YU"],["name2", "Yi"]]; 
var myMap = new Map(arr);
console.log(myMap)  //Map(2) {'name1' => 'YU', 'name2' => 'Yi'}
// Map构造函数可以将一个二维键值对数组转换成一个Map对象

var newarr=Array.from(myMap)
console.log(newarr)

3、Set

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

var arr=[12,23,23]
var a=new Set(arr)  //遍历的数组 然后把数组的元素们调用a.add添加进集合中
var arr2=Array.from(a)  //取出了数据容器中的所有数据 然后存入新数组返回值
console.log(arr2)  //[12,23]

a.add(10)
a.add(10)
a.add("aaa")
a.add([99])
a.add([99])
console.log(a)  //{12, 23, 10, 'aaa', [99] , [99]}
a.forEach(function(el){
console.log(el)  //12  23  10  aaa  [99]  [99]
})

剩余运算符  ...

var arr=[11,22,11,{}]
var arr2=[...arr]  //把arr的元素全部取出 然后存入新数组arr2中
console.log(arr,arr2,arr==arr2,arr[3]==arr2[3])
//[11,22,11,{}]  [11,22,11,{}]  false  true

数组去重

var mySet=new Set([11,22,33,99,99,11])
var a=[...mySet]
console.log(a)  //[11,22,33,99]

并集

var arr=[11,22,11,{}]
var arr2=[10,20,30,10]
var a1=new Set([...arr,...arr2])
console.log(a1)  //{11,22,{},10,20,30}

交集

var arr = [10,6,9,{}]
var arr2 = [10,20,30,10,9]
var a2 = new Set(arr.filter(function(el) {
if (arr2.includes(el)) {
return el
}
}))
console.log(a2)  //{10,9}

4、字符串

(1)includes():返回布尔值,判断是否找到参数字符串。

var str="hello, world"
var re1=str.includes("hel")
var re2=str.includes(" ")
var re3=str.includes("")
console.log(re1,re2,re3)  //true,true,true

(2)startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。

endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。

var str="61434030281"
var str2=str.startsWith("61",0)  //从下标为0的数是否以61开始
var str3=str.endsWith("3028",10)  //到下标为10的数是否以3028结尾
console.log(str2,str3)  //true,true

(3)repeat():返回新的字符串,表示将字符串重复指定次数返回。

var str="愿望交换商店"
var str2=str.repeat(3)
console.log(str2)  //愿望交换商店愿望交换商店愿望交换商店
var str="愿望交换商店"
var str2="*".repeat(str.length)
console.log(str2)  //******

(4)padStart:返回新的字符串,表示用参数字符串从头部补全原字符串。

padEnd:返回新的字符串,表示用参数字符串从尾部补全原字符串。

var str="99"
var str2=str.padEnd(8,"126a")
var str3=str.padStart(9,"9876y")
console.log(str2,str3)  //99126a12,9876y9899

5、数组

Array.of():将参数中所有值作为元素形成数组。

console.log(Array.of(null,33,"good",99)) //[null,33,"good",99]

Array.from():将类数组对象或可迭代对象转化为数组。

var myMap=new Map()
myMap.set("a1","b1")
myMap.set("a2","b2")
console.log(Array.from(myMap))  //[["a1","b1"],["a2","b2"]]

var arr=[1,2,3]
var set=new Set(arr)
console.log(Array.from(set))  //[1,2,3]

var str="abc"
console.log(Array.from(str))  //["a","b","c"]

find():查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素。

var arr=[11,22,33,44,10,9]
var re=arr.find(function(el){
console.log(999)  //两遍999
if(el>20){
return true
}})
console.log(re)  //22

findIndex():查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。

var arr=[9,80,66,45]
var re=arr.findIndex(function(el){
if(el>18){
return true
}})
console.log(re)  //1

fill():将一定范围索引的数组元素内容填充为单个指定的值

var arr=[99,88,23,9,5,13]
var arr2=arr.fill("aaa",2,4)  //索引2和3  [2,4)
console.log(arr,arr2)  //[99, 88, 'aaa', 'aaa', 5, 13]  [99, 88, 'aaa', 'aaa', 5, 13]

includes():数组是否包含指定值。注意:与 Set 和 Map 的 has 方法区分;Set 的 has 方法用于查找值;Map 的 has 方法用于查找键名。

var arr=[1,2,5,"thanks"]
var re=arr.includes("thanks")
console.log(re)  //true

flat():嵌套数组转一维数组

var arr=[["hello","world"],40,50,[[67,71],"你好",[90,[110],100]]]
var arr2=arr.flat(3)
console.log(arr2)  // ['hello', 'world', 40, 50, 67, 71, '你好', 90, 110, 100]

6、对象

es6的对象成员可以写做 一个单词 这个单词是变量名:把变量名作为对象的属性名 值取出作为属性值(易于读取,提高开发效果)

var count=20
var obj={count:count}
console.log(obj)  //{count:20}

方法简写: 函数根据业务有很多别称:构造函数 静态函数 方法 事件处理程序(监听器) 闭包 回调函数 钩子函数

var obj={
name:"He",
say:funnction(){}
}
//简写为:
var obj={
name:"He",
say(){}
}
var obj = {
name: "YU", //常用写法
"age": 20, //标准写法
["hello"]: "think", //es6写法
[true]: 18, //es6写法
[{good: 100}]: 66, //es6写法
[Symbol(100)]: 99
}
console.log(obj)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值