Javascript-通过数组循环查找关系

Javascript-通过数组循环查找关系,javascript,Javascript,我不知道如何正确地问这个问题,但基本上,我有一个关系ID数组(predecessorId和successorId),我想循环遍历它,并根据我将要查找的predecessorId获取successorId。但棘手的是,我还想获得successorId的successorId,直到没有继任者为止。下面是我想要实现的示例上下文: var sampleArray = [ { "predecessorId":"01", "successor

我不知道如何正确地问这个问题,但基本上,我有一个关系ID数组(predecessorId和successorId),我想循环遍历它,并根据我将要查找的predecessorId获取successorId。但棘手的是,我还想获得successorId的successorId,直到没有继任者为止。下面是我想要实现的示例上下文:

var sampleArray = [
{
    "predecessorId":"01",
    "successorId":"02"
},{
    "predecessorId":"01",
    "successorId":"03"
},{
    "predecessorId":"02",
    "successorId":"04"
},{
    "predecessorId":"04",
    "successorId":"05"
},{
    "predecessorId":"06",
    "successorId":"07"
}]
如果我想基于示例数组获取predecessorId“01”的树继承者,则返回值应为:

“02”-因为它是“01”的直接继承者

“03”-因为它是“01”的直接继承者

“04”-因为它是“01”的间接继承者,但却是“02”的直接继承者

“05”-因为它是“01”的间接继承者,但却是“04”的直接继承者


如果我的问题含糊不清,请告诉我。提前谢谢你

我只能想到这一点:

var sampleArray=[
{
“先人证”:“01”,
“successorId”:“02”
},{
“先人证”:“01”,
“successorId”:“03”
},{
“先人ID”:“02”,
“successorId”:“04”
},{
“先人证”:“04”,
“成功者”:“05”
},{
“先人”:“06”,
“成功者”:“07”
}];
var pre_id=“01”;
var结果=[];
结果=sampleArray.filter(x=>x.predecessorId===pre_id)
.map(x=>x.successorId);
对于(结果的var项){
var temp=sampleArray.filter(x=>x.predecessorId==item);
如果(温度长度>0){
结果。推送(临时[0]。成功ID);
}
}
控制台日志(结果)这就是你想要的吗
var sampleArray=[
{
“先人证”:“01”,
“successorId”:“02”
},{
“先人证”:“01”,
“successorId”:“03”
},{
“先人ID”:“02”,
“successorId”:“04”
},{
“先人证”:“04”,
“成功者”:“05”
},{
“先人”:“06”,
“成功者”:“07”
}]
设arrMap={}
sampleArray.forEach(itm=>{
arrMap[itm.predecessorId]?arrMap[itm.predecessorId].push(itm.successorId):arrMap[itm.predecessorId]=[itm.successorId]
})
让后继=[]
常量findSuccessor=(arr)=>{
如果(!arr)
回来
arr.forEach(val=>{
后继推送(val)
findSuccessor(arrMap[val])
})
}
findSuccessor(arrMap[“01”])

console.log(succession.sort())
正是我要找的!非常感谢。仅使用
map()
循环数组元素不是一种好的做法
forEach
是一个更好的工具,谢谢@charlietfl,下次我会记住这一点。用forEach更新了答案。:)