Условный выбор из массива JSON
Я пытаюсь выбрать и отобразить конкретные данные JSON в массиве. Данные выглядят так:
{ "thingys" : [
{
"type" : "thingy1",
"text" : "this is thingy1"
},
{
"type" : "thingy2",
"text" : "this is thingy2"
},
{
"type" : "thingy3",
"text" : "this is thingy3"
}
]}
Я использую json2html, и я обычно использовал бы что-то вроде
{"tag":"div","html":"${thingys.text}"}
Это было бы хорошо, но я хочу иметь возможность указать, что я хочу ${thingys.text}, где ${thingys.type} == "thingy3". Как бы я поступил так?
1 ответ
Решение
Лучший способ добиться чего-то подобного - включить встроенную функцию для обработки "вещей".
var transforms = {
'main': {"tag":"div","children":function() {
var out = [];
for(var i=0; i < this.thingys.length; i++)
if(this.thingys[i].test == "thingy3") out.push(this.things[i]);
return( json2html.transform(out,transforms.thing) );
}},
'thing':{"tag":"div","html":"${text}"}
};