ES6 decided that Array Comprehensions will not included in this version, ES7 will include this. Therefore, only FireFox support this, you can test it under FireFox Firebug.html
Since CoffeeScrip also has array comprehension, let's go over how it looks in CoffeeScript first:express
for person in people console.log(person.name) if person.age > 18
console.log "#{person.name}" for person in people when person.age > 18 // In coffeeScrip, //<expression> for <elm> in <list> when <elm> <condition>
Read More: http://www.cnblogs.com/Answer1215/p/4002666.htmlide
Array Comprehensions:ui
var people = [ { firstName: "Allen", secondName: "Hook", email: "allen@abc.com" }, { firstName: "Anton", secondName: "Tee", email: "tee@abc.com" }, { firstName: "Yui", secondName: "Gegg", email: "gegg@abc.com" } ];
For example, I have a list of people, and I want to get all the emails into a spreate array:this
var emails = [for(person of people) person.email]; console.log(emails);
If: spa
you can add if segement as well after for..of:3d
var emails = [for(person of people) if(person.firstName === "Yui") person.email]; console.log(emails); // ["gegg@abc.com"]
Mutli for..of:code
var nums = [1, 2, 3, 4, 5]; var letters = ["a", "b", "c", "d", "e"] var battleship = [for(num of nums) for(letter of letters) num + letter] console.log(battleship);
// ["1a", "1b", "1c", "1d", "1e", "2a", "2b", "2c", "2d", "2e", "3a", "3b", "3c", "3d", "3e", "4a", "4b", "4c", "4d", "4e", "5a", "5b", "5c", "5d", "5e"]
var nums = [1, 2, 3, 4, 5]; var letters = ["a", "b", "c", "d", "e"] var battleship = [for(num of nums) [for(letter of letters) num + letter]] console.log(battleship); // [["1a", "1b", "1c", 2 more...], ["2a", "2b", "2c", 2 more...], ["3a", "3b", "3c", 2 more...], ["4a", "4b", "4c", 2 more...], ["5a", "5b", "5c", 2 more...]]
String can also be considered as an 'array':htm
let letter = [for (letter of 'abcde') if (/[aeiou]/.test(letter)) letter].join(''); console.log(letter); // ae