我有一个包含id,skill和parent属性的数组。我想搜索该数组中的元素。如果找到,我将其保存在一个新的数组中。然后我想搜索它的父级,如果父级也有父级,那么也要保存它们。我还想保存搜索元素的子元素,如果有的话,应该在新数组中添加兄弟元素。找到没有父元素的元素将停止搜索其他父元素。
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() {}
&#13;
我还将其创建为JSFiddle(请查看输出控制台)。
我已设法在新数组中添加父元素,但在添加子元素及其兄弟元素时陷入困境。
提前致谢!
答案 0 :(得分:0)
function findChilds(id){
return data.filter(v=>v.parent==id;);
}
function findSiblings(id){
return data.filter(v=>v.parent==id.parent;);
}