记录记录记录

/ * @param needle 要查找的值 * @param haystack 被查找的数组 * @param property 当被查找项是对象时( 数组对象嵌套 )这个参数作为要查找的值的属性名称 ,如果是多维数组不会有任何影响 * @param children 当被查找项是对象时( 数组对象嵌套 )这个参数作为子集合属性名称 ,如果是多维数组不会有任何影响 * @return undefined | Object | * */




let haystack = [
{
id: "first",
type: "list",
children: [
{
id: "second0",
type: "list",
children: [
{
id: "third0",
type: "list"
},
{
id: "third1",
type: "list"
}
]
},
{
id: "second1",
type: "list"
}
]
},
{
id: "first1",
type: "list",
children: [
{
id: "second2",
type: "list"
}
]
}
];


function array_search(
haystack,
needle,
path = [],
property = "id",
children = "children"
) {
if (
haystack.some(item => {
if (item[property] === needle) {
path.push(item[property]);
return true;
} else if (item[children]) {
path.push(item[property]);
if (array_search(item[children], needle, path)) {
return true;
} else {
path = [];
return false;
}
} else {
return false;
}
})
) {
return path;
} else {
return null;
}
}


let res = array_search(haystack, "third1");


console.log(res); // ["first", "second0", "third1"]

 

 

相关文章:

  • 2021-05-28
  • 2022-12-23
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-15
猜你喜欢
  • 2022-12-23
  • 2021-12-19
  • 2021-11-14
  • 2022-12-23
  • 2021-12-03
  • 2021-07-11
  • 2021-11-19
相关资源
相似解决方案