Array Comprehension – это выражение, которое позволяет быстро создавать новый массив из существующего с помощью for и while, или без массива с инициализацией переменных во время итераций цикла.
Простые array comprehensions:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var b = [for (i in [1,2,3]) i*i]; trace(b); //[1,4,9] var abc = [ "A", "B", "C" ]; var letter = [for (i in abc) i+i]; trace(letter); //[AA,BB,CC] var i = 0; var b = [while(i < 10) i++]; trace(b); //[0,1,2,3,4,5,6,7,8,9] var a = [for (i in 0...10) i]; trace(a); //[0,1,2,3,4,5,6,7,8,9] |
Array Comprehension с использованием if:
1 2 3 |
var years = [ 1954, 1974, 1990, 2006, 2010, 2014 ]; var before2000 = [for (year in years) if (year > 2000) year]; trace(before2000); |
Array Comprehension c использованием двух массивов:
1 2 3 4 5 |
var numbers = [ 1, 2, 3 ]; var letters = [ "a", "b", "c" ]; var cross = [for (i in numbers) for (j in letters) i+j]; trace(cross); // [ "1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c" ] |
Выражение цикла могут быть любыми, включая условия и вложенные циклы, поэтому следующие действия будут работать так, как ожидалось:
1 2 3 4 5 6 7 |
var d = [ for (a in 1...11) for(b in 2...4) if (a % b == 0) a+ "/" +b ]; trace(d); // [2/2,3/3,4/2,6/2,6/3,8/2,9/3,10/2] |
Также можно инициализировать массив после его объявления:
1 2 3 4 5 6 7 |
var i = 0; var a = []; while (i < 10) { if (i % 2 == 0) a.push(i); i++; }; trace(a); //[0,2,4,6,8] |