codecamp

CoffeeScript 检测每个元素

检测每个元素

问题

你希望能够在特定的情况下检测出在数组中的每个元素。

解决方案

使用Array.every(ECMAScript 5):

evens = (x for x in [0..10] by 2)

evens.every (x)-> x % 2 == 0
# => true

Array.every被加入到Mozilla的Javascript 1.6 ,ECMAScript 5标准。如果你的浏览器支持,但仍无法实施EC5 ,那么请检查[ _.all from underscore.js]( http://documentcloud.github.io/underscore/) 。

对于一个真实例子,假设你有一个多选择列表,如下:

<select multiple id="my-select-list">
  <option>1</option>
  <option>2</option>
  <option>Red Car</option>
  <option>Blue Car</option>
</select>

现在你要验证用户只选择了数字。让我们利用array.every :

validateNumeric = (item)->
  parseFloat(item) == parseInt(item) && !isNaN(item)

values = $("#my-select-list").val()

values.every validateNumeric

讨论

这与Ruby中的Array #all?的方法很相似。

CoffeeScript 打乱数组中的元素
CoffeeScript 使用数组来交换变量
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

CoffeeScript 数据库

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }