配列



0   名前: 若葉 : 2007/05/08(火) 02:22  ID:gdO6X011 sub-9g
配列から「特定の数」以上を取得し、
その個数を取得するにはどうすればよろしいですか?
たとえば、
array = {1,3,5,7,4,2,6,9}
から7以上の数を取得し、その個数を得る。。

1   名前: 匿名 : 2007/05/08(火) 02:22  ID:gFY2524F sub-Q5
こんばんわ

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>無題ドキュメント</title>
<script type="text/javascript">
var a = 10;//ある数以上
var counter = 0;//何個あるか、カウンター
function test(ARY){
for(var i=0; i<ARY.length; i++){
if(ARY[i] >= a){//条件に適合するときカウンターを増やす
counter++;
}
}
alert(counter);
}
</script>
</head>
<body>
<div onclick="test(new Array(0,5,10,20,30,20,10,5,3,2,0))">◎</div>
<!--ちょと見難いけど配列を因数に投げる-->
</body>
</html>


どうざんしょ?
そのままペーストして
◎をクリックすれば動作します。

速記ですいませんが
有用でしたらご利用ください。

では

2   名前: 匿名 : 2007/05/08(火) 02:22  ID:gFY2524F sub-Q5
訂正

>配列を因数に
配列を引数に

でした
その他いたらないトコあるかもしれませんが・・・

3   名前: 匿名 : 2007/05/08(火) 02:22  ID:uR8UqwGx sub-Cz
Mozilla/Firefox 用。
alert ([ 1, 3, 5, 7, 4, 2, 6, 9 ].filter (function (m) { return m >= 7; }).length);  // 2

Array.prototype.filter を持たないブラウザでは、
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:filter
の「Compatibility」の節にあるコードを組み込んでおくと、同じようにできます。

4   名前: 匿名 : 2007/05/08(火) 02:22  ID:gFY2524F sub-Q5
すんません
またまた修正させてください。
グローバル変数よりも
ローカルの方が…&何回もクリックすると先程のはXなので

function test(ARY){
var a = 10;
var counter = 0;
for(var i=0; i<ARY.length; i++){
if(ARY[i] >= a){
counter++;
}
}
alert(counter);
}

こちらで、、、
他の人がもっと美しく書いてくれるかもしれませんが

以上、宜しくお願いします〜。。

5   名前: 若葉 : 2007/05/08(火) 02:22  ID:gdO6X011 sub-9g
返事遅くなり申し訳ないです。
ありがとうございます、参考になりました。

また質問があるのですが
配列を取得し出力させているのですが
+= で加算しながらテキストエリアに出力しています。
couterでループさせて二回目を出力させると改行せずに
上書きの状態になってしまいます。
\nでは改行できないみたいです。
解決策を教えていただけませんか?

6   名前: 匿名 : 2007/05/08(火) 02:22  ID:Cngvm.Da sub-Ds
>>4
そういう関数の作り方はどうなんだろうか。
間に合わせで書いたにしても、なんだか気持ち悪いのだが。

7   名前: 匿名 : 2007/05/08(火) 02:22  ID:kln7LZsY sub-Cz
>>5
別の質問は新規スレッドを立てて下さい。過去ログ検索しやすくするためです。

なお、『\nでは改行できないみたい』ではなく、「\nでは改行できないテストコード」を提示して下さい。

>>6
単に『なんだか気持ち悪い』だけだと相手も困惑するので、具体的な指摘を頂けると参考になる。

8   名前: 匿名 : 2007/05/08(火) 02:22  ID:Sq3UCHMH sub-Ds
>>7
本筋に関係のない余計なことを書いてしまいました。失礼しました。
ま、テストなのでどうでもよいのですが、testという関数名はどうな
んだろう、気持ち悪いなと思っただけです。RegExpの文脈を想像し
てしまいまして。すいません。

9   名前: 匿名 : 2007/05/08(火) 02:22  ID:Z9AAw5aA sub-Cz
>>8
なるほど。関数名・変数名の付け方というのは、重要な指摘だと思います。仰る通り、「文脈」を想像できない、あるいは混乱させるような名付け方は、避けた方が良いですからね。

関連して、JavaScript の命名慣習として、大文字だけの名前は定数に使うというのが一般的です(Java の命名規約に準じる)。ですから、仮引数に ARY という名前は、避けた方が良いかもしれません。

あと、私が考えていたのは、

>>4
a は引数にしておけば、再利用しやすくなると思います。その際、
function countMoreThan (targetArray, baseNumber) {  // 良い名前が思い付かなかった
    if (typeof baseNumber == 'undefined') baseNumber = 9;
    ...
}

のように、第二引数のデフォルト値を指定して省略可能にしておけば楽。

一覧へ戻る