0
我有一个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(请看控制台输出)。
我已经成功地将新元素添加到新数组中,但在添加子元素及其同级元素时遇到困难。
在此先感谢!
尽管此代码可能会回答问题,但提供有关如何解决问题和/或解决问题原因的其他上下文会提高答案的长期价值。 – Badacadabra