当前正在重构一些javascript(ES6)逻辑,我遇到了一种情况,我需要搜索一个任意深度的嵌套数组以查找某些元素,使用辅助函数进行检查,并根据的结果设置布尔值帮助者。
let hit_possibilities = ["CASE1", "CASE2"];
let target =
[
"cat",
"dog",
[
"CASE1",
[
"dad",
"CASE2"
],
"mom"
],
"pam"
]
以上变量代表上述两个数组。
我需要一个同时包含目标数组(可以具有任何深度和任何对象顺序)和hit_possibilities数组的函数,以检查hit_possibilities中是否有任何元素存在于目标数组中。如果该函数命中了hit_possibilities中的元素,则它将调用另一个返回true或false的函数(内容无关紧要,只是一个已编写的帮助程序)。如果返回false,则函数立即中断,返回false。如果返回true,则函数继续在数组中向下;如果没有出现错误返回的情况,则该函数返回true。
答案 0 :(得分:0)
答案 1 :(得分:0)
作为@ggorlen的替代方法,但是使用递归方法,它将看起来像这样:
let hitPossibilities = ["CASE1", "CASE2"];
let target =
[
"cat",
"dog",
[
"CASE1",
[
"dad",
"CASE2"
],
"mom"
],
"pam"
]
function search(target, hit) {
for (let i = 0; i < target.length; ++i) {
currTarget = target[i];
if(Array.isArray(currTarget)) {
if(!search(currTarget, hit)){
return false;
}
} else {
for(let j = 0; j < hit.length; ++j) {
let currHit = hit[j];
if(currTarget === currHit) {
if(!isValid()) {
return false;
}
}
}
}
}
return true;
}
// Your function here...
function isValid() {
return true; // put false to test the differet output.
}
console.log(search(target, hitPossibilities));