質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

348閲覧

javascriptの配列の中にある要素の要素数を返したい

gomatan1258

総合スコア67

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/07/07 04:43

編集2017/07/07 06:11

javascript

1(function() { 2 var moji = ["a","b","c","d","e","f","g","h","i","j","k","l", 3 "m","n","o","p","q","r","s","t","u","v","w","x","y","z" 4 ]; 5 6 var array=[]; 7 for(var i=0; i<30; i++) { 8 array.push(moji[Math.floor(Math.random() * moji.length)]); 9 } 10 function getNewArray() { 11 12.....return newArray; 13 14} 15 16 /* array --> ["g", "b", "l", "n", "q", "q", "m", "m", "l", "p", "r", "p", "t", "b", 17 "h", "g", "h", "h", "p", "f", "s", 18 "f", "y", "j", "q", "h", "u", "o", "y", "z"] 19 newArray --> [["a", 0],["b", 2].......["z", 1]];といった感じでnewArrayを返したい。*/ 20})();

["g", "b", "l", "n", "q", "q", "m", "m", "l", "p", "r", "p", "t", "b", "h", "g", "h", "h", "p", "f", "s", "f", "y", "j", "q", "h", "u", "o", "y", "z"]
としたら aの個数が0 bの個数2 .... zの個数1のようにaからzまでの個数を返したいです。

いつもお世話になっています。
["g", "b", "l", "n", "q", "q", "m", "m", "l", "p", "r", "p", "t", "b", "h", "g", "h", "h", "p", "f", "s", "f", "y", "j", "q", "h", "u", "o", "y", "z"]
としたら aの個数が0 bの個数2 .... zの個数1のようにaからzまでの個数を返したいです。
上記のように、newArrayを[["a", 個数],["b", 個数].......["z", 個数]]といった感じで返すようなプログラムは作れますでしょうか?アドバイスなどよろしくお願いします。

追記します。
ただいま、タイピングソフト作成していて、keyという変数(現在たたいたキー)でもしミスをしたらそのkeyをpush()でweakArrayという配列に格納します。今回はコンピュータがランダムで30回ミスタイプをしてarrayという配列に格納しましたという想定でお願いいたします。getNewArrayという関数でnewArrayを返したいです。すごく分かりづらい質問で申し訳ございません。

追記いたします。

javascript

1for(var t=0; t<moji.length; t++) { 2 cnt=0; 3 for(var i=0; i<weakArray.length; i++) { 4 if(weakArray[i]==moji[t]) { 5 cnt++; 6 weakCnt=cnt; 7 } 8 } 9 console.log(moji[t]+"を"+weakCnt+"回間違えました。");

こういった感じで書いていたんですが、うまくいきませんでした。

追記いたします。
括弧がたりていなかったので下記のように修正します。

javascript

1for(var t=0; t<moji.length; t++) { 2 cnt=0; 3 for(var i=0; i<weakArray.length; i++) { 4 if(weakArray[i]==moji[t]) { 5 cnt++; 6 weakCnt=cnt; 7 } 8 } 9 console.log(moji[t]+"を"+weakCnt+"回間違えました。"); 10 }

console.log(weakArray);
["a","a","i","k"]と出力されまして、
aを2回間違えました。
javascript.js:361 bを2回間違えました。
javascript.js:361 cを2回間違えました。
javascript.js:361 dを2回間違えました。
javascript.js:361 eを2回間違えました。
javascript.js:361 fを2回間違えました。
javascript.js:361 gを2回間違えました。
javascript.js:361 hを2回間違えました。
javascript.js:361 iを1回間違えました。
javascript.js:361 jを1回間違えました。
javascript.js:361 kを1回間違えました。
javascript.js:361 lを1回間違えました。
javascript.js:361 mを1回間違えました。
javascript.js:361 nを1回間違えました。
javascript.js:361 oを1回間違えました。
javascript.js:361 pを1回間違えました。
javascript.js:361 qを1回間違えました。
javascript.js:361 rを1回間違えました。
javascript.js:361 sを1回間違えました。
javascript.js:361 tを1回間違えました。
javascript.js:361 uを1回間違えました。
javascript.js:361 vを1回間違えました。
javascript.js:361 wを1回間違えました。
javascript.js:361 xを1回間違えました。
javascript.js:361 yを1回間違えました。
javascript.js:361 zを1回間違えました。
javascript.js:361 ;を1回間違えました。
javascript.js:361 ,を1回間違えました。
javascript.js:361 -を1回間違えました。
javascript.js:361 .を1回間違えました。
javascript.js:361 /を1回間違えました。
と出ました。想定外の動きでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/07/07 04:52 編集

これだけでは何をどうしたいのか分からないのですが・・・。配列の要素数を使って何かしたいということですか?
m.ts10806

2017/07/07 04:58 編集

「個数」の定義を明確にしてください。提示のソースではランダム数値をかけていたり、どういう値にしたいのか不明です。
gomatan1258

2017/07/07 05:02

例えばなのですが、タイピングソフトなどで間違ったキーなどを配列にいれて、その中で一番多いものを苦手キーとして出力するのが目的です。分かりづらくて申し訳ございません。
gomatan1258

2017/07/07 05:03

ランダムは関係ございません。紛らわしくて申し訳ないです。
m.ts10806

2017/07/07 05:05

「タイピングソフトなどで間違ったキーなどを配列にいれて」ということであれば間違ったという回数の情報を蓄積する必要があるのでどこかに入れとかないといけませんよね。
m.ts10806

2017/07/07 05:09 編集

要は前提や目的・背景などの説明がないままでは丸投げと判断され、回答は得られないケースが多いということです。多次元配列が作れたらいけそうに思うので、作ってみてください。
m.ts10806

2017/07/07 05:52

色々と追記ありがとうございます。ただ「うまくいかなかった」のは何が起きたのかこちらでは分かりません。エラーが出ているのか、想定外の動きをしたのか。どのような動きをしたのか具体的に記述してください。
m.ts10806

2017/07/07 05:53

weakArrayの中身の形式も記述してください。
guest

回答2

0

ベストアンサー

いまいちやりたいことがわからないのですが、「ある配列に入っている文字と同じ文字が何個あるかを数えた配列を作る」ということでしょうか。

JavaScript

1const res = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'].reduce( ( pre, v )=> { 2 return pre.push( [ v, ['g','b','l','n','q','q','m','m','l','p','r','p','t','b','h','g','h','h','p','f','s','f','y','j','q','h','u','o','y','z'].filter( e=> v === e ).length ] ), pre; 3}, [] ); 4console.log( res ); 5```**動くサンプル:**[https://jsfiddle.net/eo4cxopu/](https://jsfiddle.net/eo4cxopu/)

投稿2017/07/07 06:22

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/07/07 06:28

美しいコードですね・・・。これは参考にしたい。
gomatan1258

2017/07/07 07:07

当方の想定通りに動きました。ありがとうございます。ソースコードが当方には難しいので、わからないときは次回質問させていただきます。
guest

0

多次元配列を作るという事なら以下です。
あとはこれを参考にご自身でやってみてください。
※ランダム値を作る関数randRange()は今回勝手に作ったものです。
本来は別の値がちゃんと入ってくるという理解でいいですよね?

javascript

1var randRange = function (min, max) { 2 return Math.floor(Math.random() * (max - min + 1) + min); 3}; 4 5var moji = ["a","b","c","d","e","f","g","h","i","j","k","l", 6"m","n","o","p","q","r","s","t","u","v","w","x","y","z" 7]; 8 9var array=[]; 10for(i=0;i<moji.length;i++){ 11 row=[]; 12 row[moji[i]] = randRange(0,30); 13 array.push(row); 14} 15console.log(array);

*jQueryの書き方をしていたので書き換えました。

質問追記をうけて

0を入れるなどして初期化されてないweakCntを使っているからですね。
cntだけで十分です。

javascript

1cnt=0; 2for(var i=0; i<weakArray.length; i++) { 3 if(weakArray[i]==moji[t]) { 4 cnt++; 5 } 6} 7console.log(moji[t]+"を"+cnt+"回間違えました。");

※ただし、weakArrayが大きくなればなるほど無駄にループしていくこととなるので、
kei344さんのように必要なものを必要なところだけ取り出すような記述もご検討ください。

投稿2017/07/07 05:47

編集2017/07/07 06:30
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gomatan1258

2017/07/07 06:46

今回は質問の仕方が悪く混乱させてしまい、申し訳ございませんでした。以後気を付けて質問します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問