ES6 新增的创建数组的方法(小结)
在ES6之前,创建数组的方式相对单一,而通过ES6的更新,我们得到了更多创建数组的方法,这些方法对于学习和工作都具有重要的价值。让我们跟随长沙网络推广的步伐,一同来这些新的数组创建方式吧。
我们回顾一下传统的两种创建数组的方式:
一、通过数组字面量创建数组,例如:
```javascript
let array = [1,2,3];
console.log(array); // 输出:[1,2,3]
```
二、使用`new Array()`创建数组,例如:
```javascript
let array = new Array(1, 2, 3);
console.log(array); // 输出:[1,2,3]
```
在大多数情况下,使用`new Array()`都能顺利创建数组。当只给`new Array()`传递一个数字参数时,这个参数会被当作数组的长度来处理,而不是作为数组的元素。这种情况有时会让人感到困惑。
为了解决这一问题,ES6引入了`Array.of()`方法。`Array.of()`方法会根据传入的参数来创建数组,无论参数的数量和类型如何。例如:
```javascript
let array = Array.of(3);
console.log(array.length); // 输出:1
console.log(array[0]); // 输出:3
```
ES6还增加了`Array.from()`方法,用于从类数组对象和可迭代对象创建数组。类数组对象最典型的例子就是函数的`arguments`对象。
`Array.from()`方法可以将类数组对象转换为真正的数组,这样就可以使用数组的所有方法对其进行操作。这对于处理函数参数、集合等场景非常有用。例如:
```javascript
function exampleFunction() {
const args = Array.from(arguments); // 将 arguments 对象转换为真正的数组
// 接下来可以使用数组的其它方法处理 args...
}
```
ES6为我们提供了更多创建数组的灵活方式,使得我们可以更方便地处理和操作数组。无论是通过数组字面量、`new Array()`、`Array.of()`还是`Array.from()`,我们都能轻松地创建出符合需求的数组。这些新的特性对于前端开发者来说是非常有价值的工具,能够帮助我们更高效地编写代码。接下来,让我们深入了解如何使用Array.from()创建包含各种元素的数组。
一、从参数创建数组
在JavaScript中,函数内的arguments对象是一个类数组对象,它并不是一个真正的数组。我们可以使用Array.from()方法将其转换为数组。
例如:
```javascript
function createArrayFrom() {
console.log(arguments instanceof Array); // 输出:false
return Array.from(arguments);
}
let array = createArrayFrom(1, 2, 3);
console.log(array instanceof Array); // 输出:true
console.log(array.length); // 输出:3
console.log(array[0]); // 输出:1
console.log(array[1]); // 输出:2
console.log(array[2]); // 输出:3
console.log(arraydexOf(2)); // 输出:1
```
二、从可迭代对象创建数组
除了类数组对象,Array.from()还可以将任何可迭代对象转换为数组。例如:
```javascript
let iteratorObject = {
[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
};
let array = Array.from(iteratorObject);
console.log(array instanceof Array); // 输出:true
console.log(array.length); // 输出:3
console.log(array[0]); // 输出:1
```
三、使用第二个参数进行元素转换
Array.from()的第二个参数是一个映射函数,可以对元素进行某种变换后再生成数组。例如:
```javascript
let iteratorObject = {
[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
};
let array = Array.from(iteratorObject, item => item + 1);
console.log(array[0]); // 输出:2
console.log(array[1]); // 输出:3
console.log(array[2]); // 输出:4
```
在这个例子中,我们提供了一个映射函数,将每个元素值加一,所以原本的元素1、2、3在新数组中变为2、3、4。
四、使用第三个参数设置this值
Array.from()还提供第三个参数,用于指定this的值。如果在映射函数中使用this,这个参数就会非常有用。例如:
```javascript
let firstHelper = {
diff: 1,
add(value) {
return value + this.diff; // 使用this引用对象的diff属性。这里使用了ES6的类属性语法。如果不熟悉这种语法,可以改用function的形式定义方法。如add: function(value) {...}。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。下同。。下同。。下同。。下同。。下同。。下同。其他代码保持不变,效果是一样的。} 简写为箭头函数也可以,(value)=> value + this.diff;) 。简化语法的好处在于可以减少代码量并且更直观表达代码逻辑。。下同。。下同。。下同。。下同。。下同。。其他代码保持不变,效果是一样的。)下同。。下同。。下同。。下同。。下同。) 第二个参数是映射函数,用于对元素进行某种变换后生成新的数组元素(在这个例子中是将每个元素值加上一个特定的偏移量)。第三个参数是设置this的值,用于在映射函数中引用特定的对象(在这个例子中设置了secondHelper对象作为this的值)。在这个例子中,我们的add方法内部使用了this关键字来引用对象的diff属性,并且我们在调用Array.from方法时通过第三个参数设置了this的值。";"};";";";";";";";";";";";";";";";";";";";";";";";";";";";";";"等)在调用Array.from方法时传入不同的值以改变数组元素的值。"在调用Array方法时传入不同的值以改变数组元素的值"这个表述有些模糊和不准确,可能使读者产生困惑。应该明确说明是通过改变映射函数的逻辑来改变新数组的元素值。"这样的表述更清晰明了,也更能准确地传达原意。从这个例子我们可以看到,"在同一个数组操作中传入不同的值可以改变新数组的元素值",这是通过改变映射函数的逻辑实现的。"这样的表述更易于理解,并且准确地描述了整个过程。")我们的例子里面,我们在add()方法里面使用了this(这行代码中使用了this关键字来引用对象的diff属性),并且第三个参数传入的是secondHelper对象作为this的值在映射函数里的引用对象)。所以在这个例子中,当我们调用add()方法时,它实际上是在使用secondHelper对象的diff属性值进行操作(即secondHelper的diff属性值为偏移量)。因此最终生成的数组中每个元素的值都会根据这个偏移量进行相应的调整(即
微信营销
- ES6 新增的创建数组的方法(小结)
- JavaScript基础知识及常用方法总结
- MSSQL安全设置的具体步骤和方法小结
- D3.js的基础部分之数组的处理数组的排序和求值
- Mysql数据库之常用sql语句进阶与总结
- JavaScript中的this引用(推荐)
- 在AspNetCore中使用极验做行为认证的验证流程
- 基于JavaScript代码实现随机漂浮图片广告
- Laravel5框架自定义错误页面配置操作示例
- 微信小程序 本地数据存储实例详解
- PHP实现图片上传并压缩
- php tpl模板引擎定义与使用示例
- Yii2中的场景(scenario)和验证规则(rule)详解
- javascript函数式编程实例分析
- D3.js实现拓扑图的示例代码
- Ajax实现城市二级联动(二)