繁体   English   中英

搜索数组并将其父元素和子元素保存在新数组中

[英]Search through an array and save its parent and child elements in new array

我有一个ID,技能和父属性的数组。 我想在该数组中搜索一个元素。 如果找到,则将其保存在新数组中。 然后,我要搜索其父项,如果该父项也有一个父项,则也要保存它们。 我还想保存被搜索元素的子元素(如果有的话)和同级元素应添加到新数组中。 发现没有父元素的元素将停止搜索其他父元素。

 var search = 'cde'; var data = [{ 'id': '99', 'skill': 'pro', 'parent': null }, { 'id': '0', 'skill': 'abc', 'parent': '99' }, { 'id': '1', 'skill': 'bcd', 'parent': null }, { 'id': '2', 'skill': 'cde', 'parent': '0' }, { 'id': '3', 'skill': 'def', 'parent': '0' }, { 'id': '4', 'skill': 'efg', 'parent': '1' }, { 'id': '5', 'skill': 'fgh', 'parent': '1' }, { 'id': '6', 'skill': 'ghi', 'parent': '2' }, { 'id': '7', 'skill': 'hij', 'parent': null }]; var arrayP = []; searchKey(search); function searchKey(s) { var tmpskill = []; for (var i = 0; i < data.length; i++) { if (data[i].skill == s) { arrayP.push(data[i]); findParent(data[i].parent) } else {} } } function findParent(pid) { for (var i = 0; i < data.length; i++) { if (data[i].id == pid) { arrayP.push(data[i]); if (data[i].parent != null) { findParent(data[i].parent); } else {} } } } console.log(arrayP); function findChilds() {} 

我也将其创建为JSFiddle (请查看输出的控制台)。

我设法在新数组中添加了父元素,但是在添加子元素及其兄弟元素时陷入了困境。

提前致谢!

function findChilds(id){
    return data.filter(v=>v.parent==id;);
}

function findSiblings(id){
    return data.filter(v=>v.parent==id.parent;);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM