coffeescript配列操作
2329 ワード
配列の直接量
ここを見ると、もっと簡単な方法で行列を巡ることもあるだろうと思います.私がjsを書くように、for循環文を使います.はい、もちろんあります.
配列の他の慣用法
もちろん、配列のために、他にもいくつかの慣用的な操作があります.ES 5 Arayのような新しいAPI−map:
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.