文章目录

  • 一、数组方法
    • 1、forEach()
    • 2、filter()
    • 3、some()
  • 二、字符串方法
    • 1、trim()
  • 三、对象方法
    • 1、Object.keys()
    • 2、Object.defineProperty()

ES5 中给我们新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括:

  • 数组方法
  • 字符串方法
  • 对象方法
  • 接下来我们一一进行讲解。

一、数组方法

迭代(遍历)方法:forEach()map()filter()some()every()

1、forEach()

语法:

array.forEach(function(currentValue, index, arr))
  • currentValue:数组当前项的值
  • index:数组当前项的索引
  • arr:数组对象本身

如下面的例子:有一个数组,现在我们想要得到这个数组的每一个元素和索引号,并且得到该数组和该数组中元素之和,我们可以采用如下方法:

var arr = [1,2,3,4]var sum = 0;arr.forEach(function(value,index,array){console.log('数组元素为:'+value);console.log('每个数组元素的索引为:'+index);console.log('数组元素为:'+array);sum += value;})console.log('数组元素的和为:'+sum);

打印的结果为:

2、filter()

filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组它直接返回一个新数组。
语法:

array.filter(function(currentValue, index, arr))
  • currentValue: 数组当前项的值
  • index:数组当前项的索引
  • arr:数组对象本身

举例说明:
返回一个数组中大于15的新数组。

var arr = [13,22,33,4,7,8,16]var newArr = arr.filter(function(value,index,array){return value >= 15;})console.log(newArr);

打印结果为:

3、some()

some()方法用于检测数组中的元素是否满足指定条件. 即查找数组中是否有满足条件的元素 。它返回值是布尔值, 如果查找到这个元素, 就返回true, 如果查找不到就返回false。如果找到第一个满足条件的元素,则终止循环. 不在继续查找。
语法:

array.some(function(currentValue, index, arr))
  • currentValue: 数组当前项的值
  • index:数组当前项的索引
  • arr:数组对象本身

例如,判断一个数组中是否有大于20的元素存在。

 var arr = [13,22,33,4,7,8,16]var s = arr.some(function(value){return value > 20;})console.log(s);

打印结果为:

查找一个数组中的某元素是否存在。

 var arr1 = ['x','y','z','m','n','o']var x = arr1.some(function(value){return value = 'x';})console.log(x);

打印结果为:

二、字符串方法

1、trim()

trim() 方法会从一个字符串的两端删除空白字符。trim() 方法并不影响原字符串本身,它返回的是一个新的字符串。
语法:

str.trim()

例如:现在有一个字符串,想要去掉其两端的空白字符,操作如下:

var str = '    wh    ';console.log(str);var str1 = str.trim();console.log(str1);</script>

打印结果为:

三、对象方法

1、Object.keys()

Object.keys()用于获取对象自身所有的属性。效果类似 for…in,返回一个由属性名组成的数组。
语法:

Object.keys(obj)

例如现在有一个对象,我们想要获取它里面的属性名,我们就可以这么操作:

 var obj = {id: 1,name: '王欢',sex:'女',age: 18}console.log(obj);var obj1 = Object.keys(obj);console.log(obj1);

打印的结果为:

如果我们想使用上面得到的数组obj1中的内容,就可以通过forEach来遍历获取。
代码为:

obj1.forEach(function(value){console.log(value);})

打印的结果为:

2、Object.defineProperty()

Object.defineProperty()定义对象中新属性或修改原有的属性。
语法:

Object.defineProperty(obj, prop, descriptor)
  • obj:必需。目标对象
  • prop:必需。需定义或修改的属性的名字
  • descriptor:必需。目标属性所拥有的特性

这里我们需要注意的是:descriptor这个值有几个限定,首先它必须以对象的形式写入。
其次,它可以写的值有:

意义
value 设置属性的值 默认为undefined
writeable 值是否可以重写。true /false 默认为false
enumberable 目标属性是否可以被枚举。true /false 默认为 false
configurable 目标属性是否可以被删除或是否可以再次修改特性 true / false 默认为false

例如:
当我们要修改上例中的对象的name属性时,我们可以操作为:

var obj = {id: 1,name: '王欢',sex:'女',age: 18}console.log(obj);Object.defineProperty(obj,'name',{value:'小熊'})console.log(obj);

打印结果为:

如果我们要将sex属性设置为不可修改时,可以操作为:

 Object.defineProperty(obj,'sex',{writable:false})obj.sex = '男'console.log(obj);

当我们修改属性后,在打印这个对象,得到的结果为:

当我们将sex设置为:writable:true,在打印试试:
修改成功。
如果我们想要让上述中的age在遍历的时候被隐藏掉2,我们可以做如下操作:

 Object.defineProperty(obj,'age',{enumerable:false})console.log(Object.keys(obj));

打印的结果为:

可以看到age这个属性遍历时并不会显示。
需要注意的是,通过Object.defineProperty()添加的属性,其enumerable值也默认为false,所以在遍历的时候也不显示,如果想要显示,直接将其手动改为true.
如果我们不想删除某个属性,并且禁止其被删除,应该怎么操作呢,这里就要要用到configurable这个值。
以上述为例,如果不允许id属性被删除,应该操作为:

Object.defineProperty(obj,'id',{configurable:false})delete obj.idconsole.log(obj);

输出结果为:

当我们通过delete来删除id属性时,发现删除失败。
而且,对于configurable这个值,我们还要谨记:它不可被二次修改。

JavaScriptES5新方法相关推荐

  1. 行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...

    作者 | Jiaxu Miao.Yu Wu.Ping Liu.Yuhang Ding.Yi Yang 译者 | 刘畅 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) [导语] ...

  2. 微软提出极低资源下语音合成与识别新方法,小语种不怕没数据!| ICML 2019

    作者 | 谭旭 转载自微软研究院AI头条(ID: MSRAsia) 编者按:目前,人类使用的语言种类有近7000种,然而由于缺乏足够的语音-文本监督数据,绝大多数语言并没有对应的语音合成与识别功能.为 ...

  3. 何恺明的GN之后,权重标准化新方法能超越GN、BN吗? | 技术头条

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」,购票请扫码咨询 ↑↑↑ 作者 | Siyuan Qiao.Huiyu Wang.Chenxi Liu.Wei Shen.Alan Yu ...

  4. CVPR 2019审稿满分论文:中国博士提出融合CV与NLP的视觉语言导航新方法

    整理 | 刘畅.Jane 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) 如何挑战百万年薪的人工智能! https://edu.csdn.net/topic/ai30? ...

  5. 行人检测与重识别!华中科技大、微软深入挖掘,新方法实现新SOTA

    点击上方↑↑↑"视学算法"关注我 来源:公众号 机器之心 授权 如何将目标检测和重识别融合进一个框架,帮助解决多目标跟踪任务?华中科技大学和微软亚洲研究院的研究者找出了这一方向的痛 ...

  6. 无需用户输入,Adobe提出自动生成高质量合成图像新方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 没有用户输入,也能生成高质量的合成图像吗? 编辑:迈威AI研习社 ...

  7. CaDDN:基于单目的3D目标检测新方法(CVPR2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨元气满满的打工人 来源丨CV研习社 文章导读 导读:在自动驾驶的技术中,3D目标检测能够提更加丰 ...

  8. Cell:新方法PopCOGenT鉴定微生物基因组间的基因流动

    文章目录 基于微生物种群生物学定义的逆向生态学方法 日报 摘要 主要结果 图1. 重组微生物基因组比非重组微生物基因组共享更长和更高频的一致性区域 图2. 长度偏差测量最近的基因转移事件 图3.最近基 ...

  9. 中国科学家Cell重要评述文章: 宏基因组学成为病毒分类新方法

    比起其他的地球生命体,人类对病毒的了解可谓"冰山一角".宏基因组学作为新型研究工具,拓宽了人类对病毒多样性的认识.本期文献分享的是发表于<CELL>的题为"U ...

最新文章

  1. LIS ZOJ - 4028
  2. Android 视频播放器,在线播放
  3. selenium autoit java_Java+Selenium——AutoIt工具处理文件上传
  4. mysql排序行号_mysql 取得行号后再排序
  5. java对象引用传递和值传递的一些总结
  6. FCK编辑器去掉html标签
  7. 10.软件架构设计:大型网站技术架构与业务架构融合之道 --- 事务一致性
  8. [CF592D]Super M
  9. 数据分析第二章确定分析思路
  10. python秒网课_利用python完成大学刷课(从0到完成的思路)
  11. JavaScript生成uuid
  12. 通过计算机控制手机,用电脑控制手机的方法
  13. C#使用S7NetPlus以及PLCSIM Advanced V3.0实现西门子PLC仿真通讯
  14. beeline常用命令
  15. 红尘牵绊,江湖儿女惹情长
  16. iso8583协议说明
  17. 亲测-独立后台版本+学法减分小程序2022最新可用可运营源码+附带详细安装教程
  18. css3 画太极图——用一个div实现
  19. Linux 文件rwx权限问题 chmod 777 XXX 任何人拥有最高权限
  20. Webstorm2018激活和汉化详细步骤

热门文章

  1. 5G时代下的光模块:腾讯云计算技术投资5000亿元(附下载)
  2. python判断以什么开头_Python中用startswith()函数判断字符串开头的教程
  3. java绘图机器猫_简笔画教程:教你画机器猫
  4. STM32应用(九)编码器及其测速原理、L298N电机驱动控制编码器电机
  5. python tensorflow学习笔记(六)最小二乘法
  6. 利用ELK技术栈收集nginx日志
  7. 1.30.Flink SQL案例将Kafka数据写入hive
  8. 再度递表港交所,“快”能否成为绿茶餐厅突围的筹码?
  9. 详解Shell脚本:sed命令工具 ,awk命令工具
  10. 存储连接应用服务器简单入门