Как проверить, находится ли элемент в многомерном массиве, и вернуть основного родителя, в котором он находится? - PullRequest
0 голосов
/ 08 октября 2019

Итак, у меня есть многомерный массив в jquery, я пытаюсь проверить, существует ли определенный элемент в моем массиве;если это так, то он должен вернуть имя или код основного родителя (ID), в котором был найден элемент.

Вот мой массив:

$(document).ready(function(){
        
        var arrytst =[
            {
                code:"10",
                name:"Ten",
                subAc:[
                    {
                        ref:"10.1",
                        acnm:"Ten-one",
                        sub:[
                            {
                                Id:"10.1.1",
                                actnm:"Ten-one-one"
                            },
                            {
                                Id:"10.1.2",
                                actnm:"Ten-one-two"
                            }
                            
                        ]
                    },
                    {
                        ref:"10.2",
                        acnm:"Ten-two",
                        sub:[
                            {
                                Id:"10.2.1",
                                actnm:"Ten-two-one"
                            },
                            {
                                Id:"10.2.2",
                                actnm:"Ten-two-two"
                            }
                            
                        ]
                    }
                    
                ]
            },
            {
                code:"89",
                name:"Eight_Nine",
                subAc:[
                    {
                        ref:"89.1",
                        acnm:"Eight_Nine-one",
                        sub:[
                            {
                                Id:"89.1.1",
                                actnm:"Eight_Nine-one-one"
                            },
                            {
                                Id:"89.1.2",
                                actnm:"Eight_Nine-one-two"
                            }
                            
                        ]
                    },
                    {
                        ref:"89.2",
                        acnm:"Eight_Nine-two",
                        sub:[
                            {
                                Id:"89.2.1",
                                actnm:"Eight_Nine-two-one"
                            },
                            {
                                Id:"89.2.2",
                                actnm:"Eight_Nine-two-two"
                            }
                            
                        ]
                    }
                    
                ]
            }
            
        ];

    let $lookfor = "10.1" ;
        function arrayTest(){
            var GetAccountCode,GetAccountName;
                $.each(arrytst, function(Acnt_Key, account){
                 let $AccountCode = account.code,$AccountName = account.name,$SubAccount = account.subAc;
                  if($AccountCode !== $lookfor){
                      $.each($SubAccount,function(sbky,sbRf){
                          let ref =sbRf.ref, subsub =sbRf.sub;
                          if(subsub !== $lookfor){
                              $.each(subsub,function(k,sb){
                                 let id =sb.Id;
                                  if(id !== $lookfor){
                                      GetAccountCode={
                                         MainAccountCode: "Sorry",
                                         MainAccountName: "No such data:",
                                         KidElement: $lookfor+" in the array!"
                                     };
                                      return false;
                                  }
                                  else{
                                      GetAccountCode={
                                                     MainAccountCode: $AccountCode,
                                                     MainAccountName: $AccountName,
                                                     KidElement: $lookfor
                                                 };
                                  return false;
                                  }
                              });
                          }
                                    GetAccountCode={
                                                     MainAccountCode: $AccountCode,
                                                     MainAccountName: $AccountName,
                                                     KidElement: $lookfor
                                                 };
                                  return false;
                      });
                  }
                    else{
                        GetAccountCode={
                                             MainAccountCode: $AccountCode,
                                             MainAccountName: $AccountName,
                                             KidElement: $lookfor
                                         };
                          return false;
                    }
              });
            return GetAccountCode;
        }
        
        var arry = arrayTest();
        $("#getrslt").append(arry.MainAccountCode+"-----"+arry.MainAccountName+" ---> "+arry.KidElement);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="getrslt"></div>

Я пробовал это, к сожалению, он продолжает возвращать последний основной элемент в моем массиве вместо того, который преследует данные в нем. Как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...