假設變數的重新分配會導致難以除錯的錯誤,我正在尋找let在此示例中不使用的選項。請指教。
function getNodeById<F extends ISomeOptions>(
optionsList: F[],
nodeId: string): F | null {
let result: ISomeOptions | null = null;
optionsList.forEach((node) => {
if (node.id === nodeId) {
return (result = node);
}
if (
Array.isArray(node.children) &&
getNodeById(node.children, nodeId)
) {
return (result = getNodeById(node.children, nodeId));
}
return null;
});
return result;
}
uj5u.com熱心網友回復:
您需要一個簡單的回圈,您可以立即從中回傳,而不是forEach:
function getNodeById<F extends ISomeOptions>(
optionsList: F[],
nodeId: string): F | null {
for (const node of optionsList) {
if (node.id === nodeId) {
return node;
}
if (Array.isArray(node.children)) {
const node1 = getNodeById(node.children, nodeId);
if (node1) {
return node1;
}
}
}
return null;
}
uj5u.com熱心網友回復:
您可以使用Array.find
function getNodeById<F extends ISomeOptions>(
optionsList: F[],
nodeId: string): F | null {
return optionsList.find((node) => {
if (node.id === nodeId) return node
if (Array.isArray(node.children) {
// getNodeById is a recursive function, so it could be expensive to run it twice.
let child = getNodeById(node.children, nodeId)
if (child) return child
}
});
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482438.html
