JS的对象、数组等处理方法:解构
对象方法简写
你可以在定义方法时省略function和 ::
const obj = {
insteadOfThis: function() {
// do stuff
},
youCanDoThis() {
// do stuff
}
}
请注意,以上不是箭头函数,只是对象方法的简写语法。
解构对象
对象解构是获取对象并将其内部属性提取到对象外部变量的一种方法:
const obj = { x: 1, y: 2 }
// 不使用解构语法
const x = obj.x
const y = obj.y
// 使用解构语法
const { x, y } = obj
x // 1
y // 2
// 你也可以在函数参数中使用解构
// 注意这里函数的参数只有一个
function add({ x, y }) {
return x + y
}
add({ x: 3, y: 4 }) // 7
刚开始你可能会有点混乱,因为现在花括号不仅可以用来声明对象,也可以用来根据上下文对其进行解构。
// 如果花括号在等式的右边,那么你正在声明一个对象
const obj = { x: 1, y: 2 }
// 如果花括号在等式左边,那么你正在解构一个对象
const { x } = obj;
解构数组
数组解构的工作原理与对象解构几乎相同,但使用方括号而不是花括号:
const arr = ['michael', 'jackson']
const [first, last] = arr
first // michael
last // jackson
它们之间的另一个区别是对象具有属性名称,因此必须在解构的时候使用这些属性名称。由于数组值是按顺序排列的,并且没有名称,因此,解构的顺序与我们获得的值是相关联的。换句话说,first是解构中的第一个变量,因此它获取数组的第一个值。
对象属性简写
如果属性名称与对象中的变量名称相同,则可以使用属性简写:
// 这里需要写两遍 name
const name = 'Michael'
const person = { name: name }
// 对象属性简写
const person = { name }
...展开语法
创建对象或数组时,一种从现有对象或数组的属性创建新属性的方法。
// 定义一个person数组
const person = ['Michael', 'Jackson']
// 如果要把 person 数组加到新的 profile 数组里,按下面这么写的话
const profile = [person, 'developer']
// 结果会是数组里包含着一个数组
profile // [['Michael', 'Jackson'], 'developer']
profile[0] // 这是个数组 ['Michael', 'Jackson']
profile[1] // 这是字符串 'developer'
// 现在 我们用 ...展开语法
const profile = [...person, 'developer']
// 结果就变成了
profile // ['Michael', 'Jackson', 'developer']
// 对象也可以用 ...展开语法
const person = { first: 'Michael', last: 'Jackson' }
const profile = { ...person, occupation: 'developer' }
profile // { first: 'Michael', last: 'Jackson', occupation: 'developer' }
...剩余语法
剩余语法(Rest syntax) 看起来和展开语法完全相同,不同点在于, 剩余参数用于解构数组和对象。从某种意义上说,剩余语法与展开语法是相反的:展开语法将数组展开为其中的各个元素,而剩余语法则是将多个元素收集起来并“凝聚”为单个元素。
const profile = { first: 'Michael', last: 'Jackson', occupation: 'developer' }
const { occupation, ...rest } = profile
occupation // developer
rest // { first: 'Michael', last: 'Jackson' }
剩余语法用于函数参数
function myFunction(first, last, ...rest) {
return rest
}
console.log(myFunction('Michael', 'Jackson', 'Developer', 'California'))
// output: ['Developer', 'California']
JS的对象、数组等处理方法:解构的更多相关文章
- JS DOM对象控制HTML元素详解
JS DOM对象控制HTML元素详解 方法: getElementsByName() 获取name getElementsByTagName() 获取元素 getAttribute() 获取元素 ...
- js遍历对象的属性和方法
js遍历对象的属性和方法 一.总结 二.实例 练习1:具有默认值的构造函数 实例描述: 有时候在创建对象时候,我们希望某些属性具有默认值 案例思路: 在构造函数中判断参数值是否为undefined,如 ...
- (转)Silverlight调用的JS方法返回对象数组的处理方法
最近在做Silverlight应用,需要用Silverlight调用页面中Javascript方法.这 个JS方法返回一个对象数组给Silverlight.对于这个对象数组怎么在Silverlight ...
- JS对象 数组连接 concat() 方法用于连接两个或多个数组。此方法返回一个新数组,不改变原来的数组。 语法 arrayObject.concat(array1,array2,.arrayN)
concat() 方法用于连接两个或多个数组.此方法返回一个新数组,不改变原来的数组. 语法 arrayObject.concat(array1,array2,...,arrayN) 参数说明: 注意 ...
- 从js的repeat方法谈js字符串与数组的扩展方法
js将字符串重复N次的repeat方法的8个版本 /* *@desc: 将一个字符串重复自身N次 */ //版本1:利用空数组的join方法 function repeat(target, n) { ...
- ES6新增语法和内置对象(let,const, Array/String/Set 扩展方法(解构赋值,箭头函数,剩余参数))
1.let ES6中新增的用于声明变量的关键字. let 声明的变量只在所处于的块级有效. 注意:使用 let 关键字声明的变量才具有块级作用域,var 关键字是不具备这个特点的. 1. 防止循环变量 ...
- JS传递对象数组为参数给后端,后端获取
前端JS代码: var conditons = []; var test1 = new Object(); test1.name="1"; test1.id="2&quo ...
- js判断对象数组中是否存在某个对象
1. 如果要判断数组中是否存在某个元素的话很好判断,直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1 var arr=[1,2,3,4] arr.indexOf(3) arr.ind ...
- JS遍历对象的几种方法
几天前一个小伙伴问我 Object.getOwnPropertyNames() 是干什么用的 平时还真没有使用到这个方法,一时不知如何回答 从方法名称来分析,应该是返回的是对象自身属性名组成的数组 那 ...
- JS 开发中数组常用的方法
大家有没有想过,js数组为什么会有这么多的方法,没错,就是为了不同场景下处理数据的需要,就像设计模式一样,都是为了能更好的处理当前场景的需要. 首先怎么创建一个数组呢, // 两种方式 // 1,构造 ...
随机推荐
- cmd命令查看Python模块函数等帮助文档和介绍
dir函数式可以查看对象的属性 使用方法很简单,举os类型为例,在Python命令窗口输入 dir(‘os’) 即可查看os模块的属性 打开cmd命令窗口 输入python(注意:计算机需要有Py ...
- 最适合Java开发者的一本书和一软件
一书-<Java编程思想> 一软件-IntelliJ IDEA Java自学是否可以成功,答案显而易见,可以. 自学Java关键看自己是否有毅力.是否有恒心. 自学Java 自学Java不 ...
- Python——标识符的命名规则
01 Python语言的特点 python的语言特点有很多,我们这里只讲一点,python是一门面向对象的语言,即一切皆对象(Linux中有一句是:一切皆文件),括号内的只是打个比方,不懂也没事,就是 ...
- beacon帧字段结构最全总结(二)——HT字段总结
一.HT Capabilities HT Capabilities:802.11n的mac层给802.11的mac层加入了高吞吐量单元.所有新加的802.11n功能都是通过管理帧中的HT单元才得以实现 ...
- jquery手指触摸滑动放大图片的方法(比较靠谱的方法)
jquery手指触摸滑动放大图片的方法(比较靠谱的方法) <pre><!DOCTYPE html><html lang="zh-cn">< ...
- day1-python条件语句和基本数据类型
一.if 条件语句 1. if 条件语句 if 条件: 代码块 else: 代码块 2. if 支持嵌套 if 1 == 1: if 2 == 2: print("欢迎进入blog1&quo ...
- PHP常用的header头部定义
<?php header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在 heade ...
- IDEA Debug 无法进入断点的解决方法
文章来源: https://studyidea.cn/idea_breakpoint_not_use 前言 某个多模块项目中使用多个版本的 Spring,如 Spring 4,Spring 5,在使用 ...
- 创建基于OData的Web API - Knowledge Builder API, Part IV: Write Controller
基于上一篇<创建基于OData的Web API - Knowledge Builder API, Part III:Write Model and Controller>,新创建的ODat ...
- C#实现整型数据字任意编码任意进制的转换和逆转换
实现如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespa ...