Heim  >  Fragen und Antworten  >  Hauptteil

Durchsuchen Sie Json-Objekte mit den Operatoren „AND“ und „OR“.

Ich habe ein Problem, bei dem ich ein JSON-Objekt mithilfe einer bedingten Operatorzeichenfolge durchsuchen muss.

JSON-Objekt sieht aus wie

let Data = [
  {Application: 'APIM', Owner: 'Vande Mataram','Customer Code': 'DJLFKASJF',Environment: 'Dev',OS: 'Linux',Region: 'EU','TEAM ': 'DemoTestCOE'},
  {TEAM: 'BCC'},
  {Team: 'DemoTestCOE','Customer Code': 'DJLFKASJF',Owner: 'Vande Mataram',Environment: 'Prod',Region: 'EU',Application: 'Ui-Path',OS: 'Windows'},
  {Application: 'MGMT','Customer Code': 'DJLFKASJF', os: 'Windows','Owner ': 'Vande Mataram', Region: 'East US 2',Team: 'DemoTestCOE',Environment: 'MGMT'  },
  {Application: 'PIER',Owner: 'Govindarajulu Balaji',OS: 'Windows',Region: 'DemoTestCOE', Environment: 'QA'}  
]

und die unten gezeigte Bedingungszeichenfolge..

let condition =
  '"Owner": "Vande Mataram" AND ("Application": "APIM" AND "Customer Code": "DJLFKASJF") OR ("Owner": "Vande Mataram" AND "Customer Code": "DJLFKASJF") OR "Owner": "Vande Mataram"'

Kein Glück mit dem Internet ... Wie man das implementiert, kann ich nicht auf SQL Server übertragen, da es in Javascript erfolgen muss.

Ich habe online gesucht, um die Bedingungszeichenfolge in ein Array aufzuteilen, das nach Operatoren (UND/ODER) aufgeteilt ist, und habe nacheinander im JSON-Datenobjekt gesucht, aber die Bedingungszeichenfolge ist für jede Anfrage unterschiedlich. Und arbeiten Sie daran, Operatoren (AND/OR) korrekt zu implementieren. Ich bin mir nicht sicher, ob das die beste Idee ist

Ich brauche Hilfe bei der Lösung dieses Problems, um jede Art von Bedingung zu erfüllen, die mit mehreren verschachtelten Klammern bereitgestellt wird.

Danke

P粉029327711P粉029327711409 Tage vor600

Antworte allen(1)Ich werde antworten

  • P粉174151913

    P粉1741519132023-09-07 00:08:39

    Data 只是一个对象数组,因此您可以使用 Array.filter

    let Data = [
      {Application: 'APIM', Owner: 'Vande Mataram','Customer Code': 'DJLFKASJF',Environment: 'Dev',OS: 'Linux',Region: 'EU','TEAM ': 'DemoTestCOE'},
      {TEAM: 'BCC'},
      {Team: 'DemoTestCOE','Customer Code': 'DJLFKASJF',Owner: 'Vande Mataram',Environment: 'Prod',Region: 'EU',Application: 'Ui-Path',OS: 'Windows'},
      {Application: 'MGMT','Customer Code': 'DJLFKASJF', os: 'Windows','Owner ': 'Vande Mataram', Region: 'East US 2',Team: 'DemoTestCOE',Environment: 'MGMT'  },
      {Application: 'PIER',Owner: 'Govindarajulu Balaji',OS: 'Windows',Region: 'DemoTestCOE', Environment: 'QA'}  
    ]
    // and the condition string like below..
    /*
    let condition =
      '"Owner": "Vande Mataram" AND ("Application": "APIM" AND "Customer Code": "DJLFKASJF") OR ("Owner": "Vande Mataram" AND "Customer Code": "DJLFKASJF") OR "Owner": "Vande Mataram"'
    */
    console.log(Data.filter(item => {
        return item.Owner === 'Vande Mataram' 
        && (item.Application === "APIM" && item['Customer Code'] === "DJLFKASJF") 
        || (item.Owner === 'Vande Mataram' && item['Customer Code'] === "DJLFKASJF")
        || item.Owner === 'Vande Mataram';
    }));

    Antwort
    0
  • StornierenAntwort