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)
}