Javascript:如何在多维数组中找到元素的位置

Javascript:如何在多维数组中找到元素的位置,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有这样一个多阵列: function recursion(obj,strs){ if (found) return; for(var j=0;j<obj.length;j++){ c++; if (isArray(obj[j])&&!found) { recursion(obj[j],strs); } else { if (obj[j]==strs&&!found) { arr

我有这样一个多阵列:

function recursion(obj,strs){
if (found) return;
for(var j=0;j<obj.length;j++){
    c++;
    if (isArray(obj[j])&&!found) {
        recursion(obj[j],strs);
    } else {
        if (obj[j]==strs&&!found) {
            arr=obj;
            found=true;
            return;
        }
    }
}
var树=[“根”、null、[“es1”、null、[“es11”、null、“es11信息”、“es11参数”、“es12”、null、“es12信息”、“es12参数”]、[“es2”、null、[“es21”、null、“es21信息”、“es21参数”、“es22”、null、“es22信息”、“es22参数”]]

如果我想搜索“es22”,我怎样才能得到像
树[3][3][0]
这样的职位? 我试过这样做:

function recursion(obj,strs){
if (found) return;
for(var j=0;j<obj.length;j++){
    c++;
    if (isArray(obj[j])&&!found) {
        recursion(obj[j],strs);
    } else {
        if (obj[j]==strs&&!found) {
            arr=obj;
            found=true;
            return;
        }
    }
}
函数递归(obj,strs){
如果(发现)返回;

对于(var j=0;j每当找到项目时,返回
索引,并在其前面附加所有以前的索引:

var tree=[“root”、null、[“es1”、null、[“es11”、null、“es11信息”、“es11参数”]、[“es12”、null、“es12信息”、“es12参数”]、[“es2”、null、[“es21”、null、“es21信息”、“es21参数”]、[“es22”、null、“es22信息”、“es22参数”];
函数递归(arr、str、索引){
var结果;
对于(变量i=0;i
希望它能帮助:

IMeplementation:

这是我的尝试

var树=[
“根”,
无效的
[“es1”、空、[“es11”]、[“es12”],
[“es2”、空、[“es21”]、[“es22”]]
];
常量find=(子树,项,路径=[])=>Array.isArray(子树)
子树部分((e,i)=>(查找(e,项,路径)和路径。取消移位(i))&路径
:子树===项;

控制台。日志(查找(树,Es22'));< /C> >您的数组是错误的。缺少一个好的一个+ 1,可能考虑一个数组,而不是级联索引。
// findPosition TEST
const tree = [
    "root",
    null,
    [
        "es1",
        null,
        ["es11", null, "info for es11", "param for es11"],
        ["es12", null, "info for es12", "param for es12"]
    ],
    [
        "es2",
        null,
        ["es21", null, "info for es21", "param for es21"],
        ["es22", null, "info for es22", "param for es22"]
    ]
];


const expected = [3, 3, 0].join(',');
const actual = findPosition(tree, 'es22').join(',');

if (actual === expected) {
    console.log('pass');
} else {
    console.log('fail');
    console.log(actual, 'not equal to', expected)
}