一、ES5怎么生成新的数组
因为数组是引用类型的,所以生成新数组会改变原来的数组
1.push
方法
用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。
var arr = [];
arr.push(1) // 1
arr.push('a') // 2
arr.push(true, {}) // 4
arr // [1, 'a', true, {}]
2.pop
方法
用于删除数组的最后一个元素,并返回该元素。
var arr = ['a', 'b', 'c'];
arr.pop() // 'c'
arr // ['a', 'b']
- push和pop结合使用,就构成了“后进先出”的栈结构(stack)。
var arr = [];
arr.push(1, 2);
arr.push(3);
arr.pop();
arr // [1, 2]
3.shift()
方法
用于删除数组的第一个元素,并返回该元素。
var a = ['a', 'b', 'c'];
a.shift() // 'a'
a // ['b', 'c']
注意,该方法会改变原数组,因为他是引用类型的。shift()没有参数。
4.unshift()方法
用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。
var a = ['a', 'b', 'c'];
a.unshift('x'); // 4
a // ['x', 'a', 'b', 'c']
unshift()方法可以接受多个参数,这些参数都会添加到目标数组头部。
var arr = [ 'c', 'd' ];
arr.unshift('a', 'b') // 4
arr // [ 'a', 'b', 'c', 'd' ]
5.splice()
方法
通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
代码1:从第 2 位开始删除 0 个元素,插入“drum”
// 从第 2 位开始删除 0 个元素,插入“drum”
var myFish = ["angel", "clown", "mandarin", "sturgeon"];
var removed = myFish.splice(2, 0, "drum");
// 运算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"]
// 被删除的元素: [], 没有元素被删除
代码2: 从第 3 位开始删除 1 个元素
// 从第 3 位开始删除 1 个元素
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);
// 运算后的 myFish: ["angel", "clown", "drum", "sturgeon"]
// 被删除的元素: ["mandarin"]
二、ES6中生成新的数组
1.Array.of(方法)
Array.of()
方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
Array.of()
和 Array
构造函数之间的区别在于处理整数参数:Array.of(7)
创建一个具有单个元素 7 的数组,而 Array(7)
创建一个长度为7的空数组(注意:这是指一个有7个空位(empty)的数组,而不是由7个undefined
组成的数组)。
如代码:
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
语法:
Array.of(element0[, element1[, ...[, elementN]]])
参数
elementN
任意个参数,将按顺序成为返回数组中的元素。
返回值
新的 Array实例。
描述
2.Array.fill()的使用
介绍:
方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
语法:
arr.fill(value[, start[, end]])
value
用来填充数组元素的值。
start
可选起始索引,默认值为0。
end
可选终止索引,默认值为
this.length
。返回值
修改后的数组。
代码1:
let arr3 = Array(6).fill(100)
console.log(arr3)
结果:
代码2:意思说索引把1位置,扩展到2个长度,都变成100
let arr4 = [1, 2, 3, 4, 5]
arr4.fill(100, 1, 3)
console.log(arr4)
结果: