Ich arbeite am JavaScript-Filter. Ich muss Daten mit einer Spalte oder mehr als einer Spalte mit den folgenden Anforderungen filtern und siehe unten Beispiel eines Objekts.

var arr = [
      {
       "t_id" : "abc",
       "s_id" : "pai"
      },
      {
       "t_id" : "pai",
       "s_id" : "par"
      },
      {
       "t_id" : "pai",
       "s_id" : "pas"
      },
      {
       "t_id" : "pai",
       "s_id" : "pai"
      },
      {
       "t_id" : "par",
       "s_id" : "pas"
      }      
]

Wenn ich den Filter für mit dem Feld t_id mit dem Wert 'pai' anwende, wird er unter dem Objekt zurückgegeben.

{
           "t_id" : "pai",
           "s_id" : "par"
          },
          {
           "t_id" : "pai",
           "s_id" : "pas"
          },
          {
           "t_id" : "pai",
           "s_id" : "pai"
          }

Und wenn ich einen Filter mit dem Feld s_id mit dem Wert 'pai' anwende, sollte er unter dem Objekt zurückgegeben werden.

         {
           "t_id" : "abc",
           "s_id" : "pai"
          },
          {
           "t_id" : "pai",
           "s_id" : "par"
          },
          {
           "t_id" : "pai",
           "s_id" : "pas"
          },
          {
           "t_id" : "pai",
           "s_id" : "pai"
          }

Grundsätzlich, wenn ich Filter für Feld 's_id' anwenden werde. Es wird auch ein Filter für 't_id' berücksichtigt. Danke im Voraus.

0
Swapnil Yeole 18 Apr. 2018 im 13:40

3 Antworten

Beste Antwort

Verwenden Sie den Filter, um true eine der bedingten Übereinstimmungen zurückzugeben:

var arr = [{"t_id":"abc","s_id":"pai"},{"t_id":"pai","s_id":"par"},{"t_id":"pai","s_id":"pas"},{"t_id":"pai","s_id":"pai"},{"t_id":"par","s_id":"pas"}];
console.log(arr.filter(item => item.t_id === 'pai' || item.s_id === 'pai'));
1
31piy 18 Apr. 2018 im 11:14

Sie können ein Array verwenden, damit die Schlüssel prüfen und prüfen, ob die Eigenschaft dem gewünschten Wert entspricht, während Sie das Array filtern.

var array = [{ t_id: "abc", s_id: "pai" }, { t_id: "pai", s_id: "par" }, { t_id: "pai", s_id: "pas" }, { t_id: "pai", s_id: "pai" }, { t_id: "par", s_id: "pas" }],
    keys = ['t_id', 's_id'],
    value = 'pai',
    result = array.filter(o => keys.some(k => o[k] === value));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0
Nina Scholz 18 Apr. 2018 im 11:24

Sie können dies erreichen, indem Sie den Namen und den Wert des Objekts weitergeben.

var arr = [
      {
       "t_id" : "abc",
       "s_id" : "pai"
      },
      {
       "t_id" : "pai",
       "s_id" : "par"
      },
      {
       "t_id" : "pai",
       "s_id" : "pas"
      },
      {
       "t_id" : "pai",
       "s_id" : "pai"
      },
      {
       "t_id" : "par",
       "s_id" : "pas"
      }      
]

function myFilter(name, value) {
    var filteredArr = arr.filter(obj => obj[name] === value);
  
    return filteredArr;
}

var filterTID = myFilter("t_id", "pai");
var filterSID = myFilter("s_id", "pai");

console.log(filterTID);
console.log(filterSID);
0
Vishal-Lia 18 Apr. 2018 im 10:48