js实现当前存在一组数组,数组中为id的集合,取出这组数组每一个id在一个任意层级的树形结构体中的所有上级id,输出一个不会重复的数组
时间: 2024-05-02 12:19:39 浏览: 57
这个问题可以回答,可以使用递归来遍历树形结构体,判断每一个节点是否存在于给定的数组中,如果存在,则将其所有的上级id加入到一个集合中,最后输出集合中的元素即可,也可以使用非递归方式来实现。具体实现可以参考如下代码:
```
function findParentIds(tree, ids) {
const parentIds = new Set();
const stack = [...tree];
while (stack.length > 0) {
const node = stack.pop();
if (ids.includes(node.id)) {
let parent = node.parent;
while (parent !== null) {
parentIds.add(parent.id);
parent = parent.parent;
}
}
if (node.children) {
stack.push(...node.children);
}
}
return [...parentIds];
}
```
其中,`tree`是树形结构体,`ids`是要查找的id集合。函数返回的是不会重复的上级id集合。
相关问题
编写一个Java程序,去除一个数组中为0的元素组成一个新的数组
好的,下面是一个示例的Java程序:
```java
public class RemoveZeroFromArray {
public static void main(String[] args) {
int[] arr = {1, 0, 2, 0, 3};
int[] newArr = removeZero(arr);
for (int i : newArr) {
System.out.print(i + " ");
}
}
public static int[] removeZero(int[] arr) {
int count = 0;
for (int i : arr) {
if (i != 0) {
count++;
}
}
int[] newArr = new int[count];
int index = 0;
for (int i : arr) {
if (i != 0) {
newArr[index++] = i;
}
}
return newArr;
}
}
```
这个程序会输出:`1 2 3`。
程序中的 `removeZero` 方法会遍历一遍原数组,统计出不为0的元素的个数,然后创建一个新的数组,将不为0的元素放入新数组中返回。这样就去除了原数组中为0的元素。
用JS写一个方法筛选出数组中为质数的值
我可以提供一个简单的示例:function primeNumberFilter(arr){
let result = [];
for(let i = 0; i < arr.length; i++){
let num = arr[i];
let isPrime = true;
for(let j = 2; j < num; j++){
if(num % j == 0){
isPrime = false;
break;
}
}
if(isPrime){
result.push(num);
}
}
return result;
}
阅读全文