ES6数组方法 && Symbol

ES6自带严格模式

严格模式主要有以下限制

  • 变量必须声明后再使用
  • 函数的参数不能有同名属性,否则报错
  • 不能使用with语句
  • 不能对只读属性赋值,否则报错
  • 不能使用前级0表示八进制数,否则报错
  • 不能删除不可删除的属性,否则报错
  • 不能删除变量delete prop,会报错,只能删除属性del
  • eval不会在它的外层作用域引入变量
  • eval和arguments不能被重新赋值
  • arguments不会自动反映函数参数的变化
  • 不能使用arguments.caller
  • 禁止this指向全局对象
  • 不能使用fn.caller和fn.arguments获取函数调用的堆模
  • 增加了保留字(比如protected、static和interface);

数组遍历方法

  • forEach
  • map
  • find (ES6)
  • findIndex (ES6)
  • filter
  • some
  • every
  • reduce
  • reduceRight
    find 方法会把数组空位处理成undefined
let array = [0,,2]
array.forEach((item)=>{
    console.log(item)
})    // 0 2
array.find((item)=>{
    console.log(item)
})    // 0 undefined 2

findIndex 函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1

filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或等价于 true 的值的元素创建一个新数组。

let array=[1,2,"a"]
let arrayl = array.filter((item)=>{
    return typeof item=="number"
})
console.log(array1)     // 1 2

some 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some() 将会立即返回 true。

every 方法为数组中的每个元素执行一次 callback 函数,直到它找到一个会使 callback 返回 falsy 的元素。如果发现了一个这样的元素,every 方法将会立即返回 false。若收到一个空数组,此方法在一切情况下都会返回 true。

reduce 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。

let array1 = [1, 2, 3, 4];
let number = array1.reduce((previous, currentValue) =>{
    return previous + currentValue
}
console.log(number)   // 10

reduceRight 方法对数组中的每个元素执行一个由您提供的reducer函数(降序执行),将其结果汇总为单个返回值。

redece,redeceRight第二个参数为previous默认值,默认是数组第一项

forEach map find (ES6) findIndex (ES6) filter some every 第二个参数是callback的this

Set

Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。如果传递一个可迭代对象,它的所有元素将不重复地被添加到新的 Set中。

利用Set中特性,我们可以用Set轻松实现数组去重

let arr = [1,1,2,3,3,3,4,undefined,NaN,NaN]  
let n = new Set(arr)  
console.log([...n]);      
//  [1, 2, 3, 4, undefined,NaN]

NaN之间被视为相同的值(尽管 NaN !== NaN)

set 方法
  • add
  • delect
  • has
  • clear
  • size
add

默认去重,重复的无法添加

在Set对象尾部添加一个元素。返回该Set对象。

delect

移除Set的中与这个值相等的元素,返回Set.prototype.has(value)在这个操作前会返回的值(即如果该元素存在,返回true,否则返回false)。

has

返回一个布尔值,表示该值在Set中存在与否。

clear

移除Set对象内的所有元素。

size

返回Set对象的值的个数。

forEach

遍历的时候只有value值

keys / values / entries

都是遍历的value

let arr = [1, 2, 3, 9, NaN, undefined]
let n = new Set(arr)
for (let key of n.keys()) {  
    console.log(key)
}
Map

普通对象key值只能是字符串,非字符串key值自动转换成字符串

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值

键的相等

NaN 是与 NaN 相等的(虽然 NaN !== NaN),剩下所有其它的值是根据 === 运算符的结果判断是否相等。

Symbol

基本数据类型 通过函数执行得到 不能使用new执行

let value = Symbol();  
console.log(value);  // Symbol()

唯一值

// 传参 表示对当前Symbol值的描述
// 为了可读性和好区分
let value1 = Symbol("name");  
let value2 = Symbol("name");  
console.log(value1,value2)      // Symbol(name) Symbol(name)
console.log(value1===value2);   // false

不能进行运算因为不可以转数字 也不可以进行字符串拼接都会报错

可以转为布尔值

当做属性名的时候只能用[""]的形式

Object.getownPropertySymbols() 方法可以返回所有类型的键名

将所有的属性名是Symbol类型的key放在一个数组中

let a = Symbol("name")  
let obj = {[a]:"前端"}  console.log(obj[a]);    // 前端  console.log(Object.getOwnPropertySymbols(obj))  //  [Symbol(name)]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 转载:在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总...
    七色烟火阅读 3,207评论 0 3
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,095评论 0 3
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,352评论 0 20
  • [TOC] 参考阮一峰的ECMAScript 6 入门参考深入浅出ES6 let和const let和const都...
    郭子web阅读 1,771评论 0 1
  • 总结了一些开发中常用的函数: usleep() //函数延迟代码执行若干微秒。 unpack() //函数从二进制...
    ADL2022阅读 454评论 0 3