// 数组扁平化:将嵌套的数组转化为一维数组。
function flattenArray(arr) {
let result = [];
for (const item of arr) {
if (Array.isArray(item)) {
// concat 它用于将一个或多个字符串连接起来创建一个新的字符串。
result = result.concat(flattenArray(item));
} else {
result.push(item);
}
}
return result;
}
console.log(flattenArray([1, [2, [3, 41], 5], 6])); // 输出: [1, 2, 3, 4, 5, 6]
for…of
for…of 是 JS 中用于遍历可迭代对象(如数组、字符串、Map、Set 等)的一种循环语法。
参数一:指定的变量,用于存储每次迭代得到的元素的值。
参数二:可迭代的对象,如数组、字符串、Map、Set 等。
.concat()
.concat 是 JavaScript 字符串对象的方法之一,它用于将一个或多个字符串连接起来创建一个新的字符串。
语法:
str.concat(string2, string3, …, stringX)
参数说明:
string2, string3, …, stringX:要连接到原字符串的字符串值。
返回值:连接后的新字符串。
示例:
var str1 = 'Hello';
var str2 = 'World';
var result = str1.concat(', ', str2, '!');
console.log(result); // 输出: "Hello, World!"
在示例中,首先创建了两个字符串变量 str1 和 str2,分别保存了 “Hello” 和 “World”。然后,使用 .concat 方法将这两个字符串连接起来,并添加一些额外的字符串(", " 和 “!”),最终得到了 “Hello, World!”。
注意:与其他字符串操作方法(如 + 运算符)不同,.concat 方法不会改变原始字符串,而是返回一个新的字符串。因此,如果要保留连接后的结果,需要将其赋值给一个新的变量或字符串对象
.push()
.push() 用于将一个或多个元素添加到数组的末尾,并返回修改后的数组的新长度。
语法:
arr.push(element1, element2, …, elementX)
参数说明:
element1, element2, …, elementX:要添加到数组末尾的一个或多个元素。
返回值:修改后的数组的新长度。
示例:
var array = [1, 2, 3];
var length = array.push(4, 5);
console.log(array); // 输出: [1, 2, 3, 4, 5]
console.log(length); // 输出: 5
在示例中,首先创建了一个数组 array,包含了元素 [1, 2, 3]。然后使用 .push() 方法将两个元素 4 和 5 添加到数组末尾。.push() 方法修改了原始数组,将其变为 [1, 2, 3, 4, 5],并返回新数组的长度 5。
.push() 方法允许向数组中添加一个或多个元素,无论是单个值还是多个值,它们都将被依次追加到数组的末尾。
需要注意的是,.push() 方法会直接修改原始数组,如果不想改变原始数组,可以先创建原数组的副本进行操作,或者使用其他数组方法以不改变原始数组的方式添加元素。
补充一些其他递归实现:
// 阶乘计算:计算一个正整数的阶乘。 5 × 4 × 3 × 2 × 1 = 120。
function computeValue(n) {
if (n === 0) {
return 1
}
return n * computeValue(n - 1)
}
console.log(computeValue(5))
// 斐波那契数列:生成斐波那契数列的前n项。
function fibonacci(n) {
if (n === 0) {
return 0;
}
if (n === 1 || n === 2) {
return 1;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(7)); // 输出: 13