slice 片,切片--提取数组一部分
- .slice(param1,param2)
- param1:开始位置
- param2:结束位置
- 参数为负,倒置计算
- 仅有一参,默认到尾
concat 合并多个数组/字符串
- 参数为一个数组:打开一层[ ]
- 参数可为多个值(不同类型也可以)
flat 扁平化
- .flat(param)
- param默认为1
- param= Infinity:完全扁平化
- 默认拆一层
都会生成新数组
.slice()
在JavaScript中,.slice() 方法是数组的一个基本操作方法,它用于提取原数组的一部分,返回一个新数组,不改变原数组。该方法接受两个参数,分别是开始位置和结束位置(不包括结束位置本身的元素),并按照以下规则工作:
1. 如果只有一个参数,`.slice()` 会返回从该参数指定位置到数组末尾的所有元素。
2. 如果有两个参数,它会返回从开始位置到结束位置(但不包括结束位置)之间的所有元素。
3. 如果参数是负数,它将从数组的末尾开始计算位置。
4. 如果省略第二个参数,则默认提取到数组的末尾。
这里有几个例子来说明 `.slice()` 方法的使用:
let array = [0, 1, 2, 3, 4, 5];
// 从索引2开始到数组末尾
let sliced1 = array.slice(2); // 结果是 [2, 3, 4, 5]
// 从索引1开始到索引4(不包括4)
let sliced2 = array.slice(1, 4); // 结果是 [1, 2, 3]
// 使用负数参数
let sliced3 = array.slice(-3); // 结果是 [3, 4, 5], 相当于 array.slice(3)
// 使用负数参数作为开始和结束位置
let sliced4 = array.slice(-5, -2); // 结果是 [1, 2, 3], 相当于 array.slice(1, 4)
值得注意的是,`.slice()` 方法也可以用于字符串,其作用是从字符串中提取一部分,并返回一个新的字符串,不改变原字符串。使用方法与数组中类似。
.concat()
在JavaScript中,`.concat()` 方法用于合并两个或多个数组。这个方法不会改变现有的数组,而是返回一个新数组,该数组包含了原始数组和所有传入`.concat()`方法的数组或值的组合。
`.concat()` 方法可以接受任意数量的参数,可以是数组,也可以是单个值。如果参数是数组,则会将数组中的元素添加到结果数组中;如果参数是单个值,则会直接将该值添加到结果数组中。
下面是一些`.concat()`方法的使用示例:
let array1 = [1, 2, 3];
let array2 = [4, 5, 6];
// 合并两个数组
let combined = array1.concat(array2); // 结果是 [1, 2, 3, 4, 5, 6]
// 合并数组并添加单个值
let combinedWithValue = array1.concat(array2, 7); // 结果是 [1, 2, 3, 4, 5, 6, 7]
// 合并数组并添加多个值
let combinedWithValues = array1.concat(array2, 7, [8, 9]); // 结果是 [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 合并数组并添加嵌套数组
let nestedArray = array1.concat([array2, [7, 8]]); // 结果是 [1, 2, 3, [4, 5, 6], [7, 8]]
需要注意的是,`.concat()` 方法不会改变原数组,而是返回一个新的数组。此外,如果`.concat()`方法的参数是一个嵌套数组,那么这个嵌套数组会被作为一个整体添加到结果数组中,而不是将嵌套数组中的元素单独添加。如果你想要扁平化嵌套数组,你需要使用其他方法,如`.flat()`。
.flat()
在JavaScript中,`.flat()` 方法用于将多维数组扁平化成一维数组。这个方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
`.flat()` 方法接受一个可选参数,用于指定要扁平化的深度。如果不提供参数,默认深度为1。如果想要扁平化所有深度的子数组,可以使用 `Infinity` 作为参数。
下面是一些 `.flat()` 方法的使用示例:
let multiDimensionalArray = [1, [2, [3, [4]], 5]];
// 扁平化一层深度
let flatOneLevel = multiDimensionalArray.flat(); // 结果是 [1, 2, [3, [4]], 5]
// 扁平化两层深度
let flatTwoLevels = multiDimensionalArray.flat(2); // 结果是 [1, 2, 3, [4], 5]
// 完全扁平化
let completelyFlat = multiDimensionalArray.flat(Infinity); // 结果是 [1, 2, 3, 4, 5]
`.flat()` 方法不会改变原始数组,而是返回一个新的扁平化数组。如果数组中没有嵌套的子数组,`.flat()` 方法将返回一个与原数组相同的数组。
`.flat()` 方法是ES2019(ECMAScript 2019)的一部分,因此在一些较旧的浏览器或JavaScript环境中可能不被支持。如果需要兼容这些环境,可以使用递归或其他方法来实现类似的功能。