Вы можете использовать filter() и map() для создания новых массивов нужных вам данных.
Предположим, вы уже получаете данные JSON в arrayCollection (или массив), поэтому для этого примера я просто создаю массив:
private var GetVotesResult:Array = [{"Aid":0,"Arank":0,"Atext":null,"ClientId":16,"Votes":0,"qid":10,"qtext":"Who will win 2011 football world cup?"},
{"Aid":4,"Arank":1,"Atext":"yes","ClientId":null,"Votes":0,"qid":null,"qtext":"Who stole my socks?"},
{"Aid":5,"Arank":2,"Atext":"no","ClientId":null,"Votes":0,"qid":null,"qtext":null},
{"Aid":6,"Arank":3,"Atext":"i don't know","ClientId":null,"Votes":0,"qid":null,"qtext":null}];
Теперь вы можете использовать Array.filter для создания нового массива, который содержит только те элементы, которые имеют допустимое значение для нужного поля:
//Get an array with elements that have the desired property:
public function getElementsWithProperty( propName:String ):Array {
return GetVotesResult.filter( elementHasProp( propName ) );
}
private function elementHasProp( propName:String ):Function {
return function( element:Object, index:int, array:Array ):Boolean {
return ( element[ propName ] != null );
}
}
Чтобы проверить вышеизложенное:
var elementsWithQText:Array = getElementsWithProperty( 'qtext' );
trace( 'Values of qtext in elementsWithQText array: ' );
for each ( var element:Object in elementsWithQText ) {
trace( element.qtext );
}
//OUTPUT:
//Values of qtext in elementsWithQText array:
//Who will win 2011 football world cup?
//Who stole my socks?
Или вы можете использовать Array.map для создания массива только значений для определенного свойства:
//Get an array of only a certain property:
public function makeArrayOfProperty( propName:String ):Array {
return GetVotesResult.map( valueOfProp( propName ) );
}
private function valueOfProp( propName:String ):Function {
return function( element:Object, index:int, array:Array):String {
return element[ propName ];
}
}
Вы можете протестировать функцию карты выше с помощью:
var valuesOfAtext:Array = makeArrayOfProperty( 'Atext' );
trace( 'Values of valuesOfAtext: ' + valuesOfAtext );
//OUTPUT: Values of valuesOfAtext: ,yes,no,i don't know
Эта страница отлично описывает карту, фильтр и остальную часть массива: http://www.onebyonedesign.com/tutorials/array_methods/
person
Seanonymous
schedule
18.01.2012