js递归拿到自己需要的值
时间: 2023-10-08 15:03:50 浏览: 37
在JavaScript中,递归函数可以通过函数的返回值来传递自己需要的值。下面是一个简单的例子:
```javascript
function sum(arr) {
if (arr.length === 0) {
return 0;
} else {
return arr[0] + sum(arr.slice(1));
}
}
const arr = [1, 2, 3, 4, 5];
console.log(sum(arr)); // 输出15
```
在这个例子中,函数 `sum` 接收一个数组 `arr`,如果数组长度为 0,那么函数返回 0,否则函数返回数组第一个元素加上剩余元素的和。在递归调用中,通过 `arr.slice(1)` 把数组的第一个元素去掉,传递给下一次递归调用。最终,当数组长度为 0 时,递归结束,返回最终的结果。
需要注意的是,递归函数的返回值可以是任何类型,可以是基本数据类型,也可以是对象、数组等复杂数据类型。在使用递归时,需要注意控制递归深度,避免出现栈溢出等问题。
相关问题
js每次都拿到递归对象数组的最子级
你可以使用递归函数来遍历整个对象数组,并找到最子级的元素。下面是一个示例代码:
```javascript
function findLeafNodes(arr) {
let result = [];
arr.forEach((item) => {
if (item.children) {
result = result.concat(findLeafNodes(item.children));
} else {
result.push(item);
}
});
return result;
}
```
这个函数接收一个对象数组作为参数,遍历每个对象,如果该对象有子元素,则递归调用该函数,并将子元素的结果合并到结果数组中;如果该对象没有子元素,则将该对象添加到结果数组中。最终返回的结果数组即为所有最子级元素的集合。
js每次都拿到递归对象数组的第一层的最子级
如果你想要拿到递归对象数组的第一层的最子级,可以使用递归函数来实现。以下是一个示例代码:
```javascript
function getFirstLevelChildren(arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(getFirstLevelChildren(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
}
```
这个函数接收一个数组作为参数,并且递归遍历这个数组。如果当前元素是一个数组,那么就继续递归遍历这个数组;否则,就把当前元素添加到结果数组中。最终返回结果数组,即递归对象数组的第一层的最子级。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)