Dostaję 100 obiektów (JSON) z witryny, która jest tak budowa.

"object" : [{
  "id": 12243,
  "name": 'Carl',
  "text": 'subheader',
  "tags": ["cars","child", "blue"],
  ...
},
{
  "id": 12245,
  "name": 'Dark',
  "text": 'subheader',
  "tags": ["cars"],
  ...
}
...
]

Chcę tylko uzyskać, który ma tag dziecko . Jak mogę to zrobić?

0
test123456 27 czerwiec 2017, 23:34

4 odpowiedzi

Najlepsza odpowiedź

Możesz spróbować czegoś takiego:

var objectsWithChild = json.object.filter(function(o){
    return o.tags.includes("child");
});

Gdzie json jest twój ciąg JSON.

3
Christos 27 czerwiec 2017, 20:38

Prawdopodobnie istnieje wiele sposobów na wdrożenie tego. Ale główne idee są głównie takie same. Tutaj w formie tekstowej:

  1. Zdefiniuj pojemnik (na przykład tablicę) dla dopasowanych obiektów.
  2. Pętla przez wszystkie obiekty.
  3. Pętla przez wszystkie wpisy swojej tablicy "Tagi".
  4. Sprawdź, czy znajdziesz żądaną wartość "dziecko".
  5. Zapamiętaj swój znaleziony obiekt, dodając go do kontenera (tablica).
0
Edgar Klepek 27 czerwiec 2017, 20:46

Christos ma czystszy sposób, aby to zrobić, ale ten sposób może być wyraźniejszy dla początkującego. Jednym ze sposobów by tego było użyć zagnieżdżonych pętli.

var myObjects = []

for (var i = 0; i < data.object.length; i++) {
    var ob = data.object[i];
    for (var j = 0; j < ob.tags.length; j++) {
         if (ob.tags[i] === "child") {
             myObjects.push(ob);
         }
    }
}
0
Alex Bieg 27 czerwiec 2017, 20:41

Korzystanie z array.prototype.filter () .

var objs = [{
  "id": 12243,
  "name": 'Carl',
  "text": 'subheader',
  "tags": ["cars","child", "blue"]
},
{
  "id": 12245,
  "name": 'Dark',
  "text": 'subheader',
  "tags": ["cars"]
}]
  
  
var objsWithTags = objs.filter(obj => obj.tags.indexOf('child') > -1);

console.log(objsWithTags);
0
Mohamed Abbas 27 czerwiec 2017, 20:40