js梳理笔记(二) - 数组之创建数组

本文详细介绍了JavaScript中数组的创建方式,包括Array构造函数、数组字面量法以及ES6新增的from()和of()方法。讲解了如何使用这些方法创建数组、处理字符串、映射转换和处理类数组对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

红宝书学习笔记

第一章: 字符串操作方法
第二章: 数组之创建数组



一、Array构造函数

  • 使用Array构造函数创建数组。
let colors = new Array();
  • 如果知道数组中元素的数量,可以传入一个数值然后length属性会被自动创建并等于这个数值。
let colors = new Array(20);
  • 也可以给构造函数传入要保存的元素。
let colors = new Array("red","green","blue");
  • 只传一个值,如果这个值是数字,则创建指定长度的数组,否则创建只包含一个该值的数组。
let colors = new Array(3); // 创建一个包含三个元素的数组
let name  = new Array("Bob"); // 创建一个只包含一个元素,即字符串“Bob”的数组
  • 使用Array 构造函数时,也可以省略 new 操作符,结果是一样的。
let colors = Array(3);
let name = Array("Bob")

二、数组字面量法

数组字面量是在中括号中包含以逗号分隔的元素列表。

在使用数组字面量表示法创建数组不会调用Array构造函数。

let colors = ["red","green","blue"]; // 创建一个包含三个元素的数组
let name = []; // 创建一个空数组
let values = [1,2,]; // 创建一个包含2个元素的数组

三、from() 和 of()

Array 构造函数还有两个ES6新增的用于创建数组的静态方法,即:from() 和 of() ;
from() 用于将类数组结构转换为数组实例。
Array.from() 的第一个参数是一个类数组对象,即任何可迭代的结构,或者有一个length属性和可索引元素的结构。

from()

1.字符串被拆分为单字符数组

console.log(Array.from('Matt'));  // ["M","a","t","t"]

2.使用from将集合和映射转换为一个新数组

const m = new Map().set(1,2).set(3,4);
const s = new Set().add(1).add(2).add(3).add(4);
console.log(Array.from(m)); // [[1,2],[3,4]]
console.log(Array.from(s)); // [1,2,3,4]

3. 对现有数组执行浅复制

const a1 = [1,2,3,4];
const a2 = Array.from(a1);
console.log(a1);  // [1,2,3,4]
console.log(a1 === a2); // false

4.可以使用任何可迭代对象

const iter = {
	*[Symbol.iterator]() {
		yield 1;
		yield 2;
		yield 3;
		yield 4;
	}
}
console.log(Array.from(iter)); // [1,2,3,4]

5.arguments对象可以被轻松地转为数组

function getArgs() {
	return Array.from(arguments)
}
console.log(getArgs(1,2,3,4)); // [1,2,3,4]

6.转换带有必要属性的自定义对象

const arrayLikeObject = {
	0: 1,
	1: 2,
	2: 3,
	3: 4,
	length: 4
};
console.log(Array.from(arrayLikeObject)); // [1,2,3,4]

7. 接收第二个可选的映射函数参数

这个函数可以直接增强新数组的值,而无需像调用Array.from().map() 那样线创建一个中间数组。

const a1 = [1,2,3,4];
const a2 = Array.from(a1, x => x**2);
console.log(a2); // [1,4,9,16]

8. 接收第三个可选参数,用来指定映射函数中this的值。

但是这个重写的this值在箭头函数中不适用。

const a1 = [1,2,3,4];
const a2 = Array.from(a1, function(x) { return x**this.exponent} , {exponent:2});
console.log(a2); // [1,4,9,16]

of()

of() 用于将一组参数转换为数组实例。这个方法用于替代在ES6之前常用的 Array.prototype.slice.call(arguments), 一种异常笨拙的将arguments对象转换为数组的写法。

console.log(Array.of(1,2,3,4)); // [1,2,3,4]
console.log(Array.of(undefined)); // [undefined]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值