coffeescript配列操作


配列の直接量
array1 = [1, 2, 3]
coffeescriptでは、配列は面白いところがあります.たとえば、私は下記のように範囲配列を定義できます.
range = [1..5]
最後にコンパイルされます.
var range;
range = [1, 2, 3, 4, 5];
もっと面白いところがあります.似たような文法を使って配列を操作できます.
firstTwo = ["one", "two", "three"][0..1]
numbers = [0..9]
numbers[3..5] = [-3, -4, -5]
配列巡回
ここを見ると、もっと簡単な方法で行列を巡ることもあるだろうと思います.私がjsを書くように、for循環文を使います.はい、もちろんあります.
words = ["rattled", "roudy", "rebbles", "ranks"]
for item, i in words
    # item = words[i]
    # do something
ES 5には、配列に新たなAPIが追加されています.
array.forEach(function(item, i){
  myFunction(item)
});
coffeescriptでは、より優雅にすることができます.
myFunction(item) for item in array
直観的に見えるし、会話的にもなるし、文章を書いているようですね.
配列の他の慣用法
もちろん、配列のために、他にもいくつかの慣用的な操作があります.ES 5 Arayのような新しいAPI−map:
var result = []
for (var i=0; i < array.length; i++)
  result.push(array[i].name)

//  ES5 Array  API——map
var result = array.map(function(item, i){
  return item.name;
});
そんなに煩雑にしなくてもいいです.
result = (item.name for item in array)
もし行列からある項目を選別したいなら、どうすればいいですか?JSを使って、そうします.
var result = []
for (var i=0; i < array.length; i++)
  if (array[i].name == "test")
    result.push(array[i])

//  ES5 Array  API——filter
result = array.filter(function(item, i){
  return item.name == "test"
});
えっと、ほら、私たちはES 5のAPIを知っています.FIlterです.これらの新しいAPIはよくないというわけではないですが、これらのAPIを使うと、追加のAPIの呼び出しがあります.多少性能に悪い影響があります.幸運なことに、coffeescriptは類似の方式を提供しますが、本質的にはより速いforサイクルを使って実現します.
#       when   
result = (item for item in array when item.name is "test")
配列のもう一つの最も一般的な操作は、ある値が含まれているかどうかを確認することです.indexOf法を使ってもいいですが、いくつかの低いバージョンのIEブラウザはまだこの関数をサポートしていません.
var included = (array.indexOf("test") != -1)
coffeescriptでは、私たちはinキーワードを使っています.
included = "test" in array
このコードは最後に翻訳されました.
var included;
var __indexOf = Array.prototype.indexOf || function(item) {
  for (var i = 0, l = this.length; i < l; i++) {
    if (this[i] === item) return i;
  }
  return -1;
};
included = __indexOf.call(array, "test") >= 0;
完全互換IE.