我有一個嵌套數組,一旦滿足條件,它應該給所有的父ID,例如我有一個數據數組,其中我應該匹配一旦條件滿足,如何獲取嵌套數組的ID?
- getParentIds(data,182,[]);
- 結果:[96,182];
- getParentIds(data,174,[]);
- 結果:[109,219,76,174];
var data = [{
"id": 96,
"name": "test1",
"items": [{
"id": 181,
"name": "Yes",
"items": []
}, {
"id": 182,
"name": "No",
"items": []
}]
}, {
"id": 109,
"name": "Test5",
"items": [{
"id": 219,
"name": "opt2",
"items": [{
"id": 76,
"name": "test3",
"items": [{
"id": 173,
"name": "Yes",
"items": []
}, {
"id": 174,
"name": "No",
"items": [{
"id": 100,
"name": "test2",
"items": [{
"id": 189,
"name": "Yes",
"items": []
}]
}]
}]
}]
}, {
"id": 224,
"name": "opt3",
"items": []
}]
}];
function getParentIds(data, id, parentIds) {
if (!parentIds) {
parentIds = [];
}
data.map(function(item) {
if (item.id === id) {
parentIds.push(item.id);
return parentIds;
} else if (item.items.length === 0) {
// do nothing
} else {
return getParentIds(item.items, id, parentIds);
}
});
}
console.log("Array list: " + getParentIds(data, 182, []));
能給我這個什麼建議嗎?
* JS:71未捕獲的ReferenceError:getParentDetails沒有定義* – isvforall
嘗試像後序遍歷 –
[Array.prototype.map()](HTTPS://developer.mozilla。 org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)根據回調函數返回數組的新版本,您可能需要[Array.prototype.forEach()](https:/ /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)和'getParentIds()'應該返回一個值,所以在'foreach()'循環之後,你應該'返回parentIds;' –