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

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

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

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

jQuery

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

Q&A

解決済

3回答

3685閲覧

Jquery JavaScriptで2つの配列から組み合わせを作成する方法

tato.aoki

総合スコア33

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/01/21 07:17

編集2017/01/21 07:48

Jqueryを使った処理で方法が思いつかず行き詰まっています。
皆様のお力をお借りしたく投稿いたしました。
どうぞよろしくお願いします。

■やりたいこと
2つの配列から組み合わせを作成した後<li>要素を追加したい。
下記のコード内の【createList()】の処理が思いつかない。

javascript

1var array1 = ['A','B']; 2var array2 = ['1','2']; 3 4function createList(){ 5//この部分の処理が思いつきません。 6//配列【array1】と【array2】の組み合わせを生成してul#listに<li>要素をappendしたい。 7}

【createList()実行前】

html

1<button onclick="createList();">createList</button> 2 3<ul id="list"> 4</ul>

【createList()実行後】

html

1<button onclick="createList();">createList</button> 2 3<ul id="list"> 4 <li data-array1="A" data-array2="1">A × 1</li> 5 <li data-array1="A" data-array2="2">A × 2</li> 6 <li data-array1="B" data-array2="1">B × 1</li> 7 <li data-array1="B" data-array2="2">B × 2</li> 8</ul>

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

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

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

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

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

namimon

2017/01/21 07:45

<li>内の data-arrayは全て1ですか?
tato.aoki

2017/01/21 07:49

質問時のコードの記載が間違っていました。
guest

回答3

0

ベストアンサー

HTML

1<button id="createList">createList</button> 2 3<ul id="list"> 4</ul>

JavaScript

1$( _=> { 2 const array1 = [ 'A', 'B' ]; 3 const array2 = [ '1', '2' ]; 4 const $_list = $( '#list' ); 5 $( '#createList' ).on( 'click', function() { 6 $.each( array1, ( i, v ) => { 7 $.each( array2, ( ii, vv ) => { 8 $_list.append( '<li data-array1="' +v + '" data-array2="' +vv + '">' +v + ' × ' +vv + '</li>'); 9 } ); 10 } ); 11 } ); 12} ); 13```**動くサンプル:**[https://jsfiddle.net/5j3jnxfe/](https://jsfiddle.net/5j3jnxfe/) 14 15--- 16 17【jQuery.each() | jQuery API Documentation】 18[http://api.jquery.com/jquery.each/](http://api.jquery.com/jquery.each/) 19 20.each() | jQuery 1.9 日本語リファレンス | js STUDIO21[http://js.studio-kingdom.com/jquery/traversing/each](http://js.studio-kingdom.com/jquery/traversing/each) 22

投稿2017/01/21 08:17

編集2017/01/21 08:20
kei344

総合スコア69398

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

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

tato.aoki

2017/01/22 11:03

ご回答ありがとうございます! 思い通りの処理を実装することができました。 動くサンプルまでご提示いただき本当に助かりました。
guest

0

こんなかんじですか。

javascript

1function createList(){ 2 array1.map( 3 e1 => array2.map( 4 e2 => $('#list').append(`<li data-array1="${e1}" data-array2="${e2}">${e1} × ${e2}</li>`) 5 ) 6 ) 7}

投稿2017/01/21 08:08

Lhankor_Mhy

総合スコア36074

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

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

tato.aoki

2017/01/22 11:02

素早いご回答本当にありがとうございました! JQueryのmapの使い方をこれを機にしっかりと調べなおすことにします!
guest

0

2つの配列から組み合わせを作成するのと、組み合わせを元にli要素を生成するのは処理を分割できるので。

<button id="createList">createList</button> <ul id="list"> </ul>

javascript

1// 2つの配列から組み合わせを作成 2function makeComb(arr1, arr2) { 3 var result = []; 4 arr1.forEach(function(v1) { 5 arr2.forEach(function(v2) { 6 result.push([v1, v2]); 7 }); 8 }); 9 return result; 10}; 11 12function createList() { 13 var array1 = ['A', 'B'], 14 array2 = ['1', '2'], 15 comb = makeComb(array1, array2), // [["A","1"],["A","2"],["B","1"],["B","2"]] 16 $ul = $('#list'); 17 18 // li要素の作成 19 var $list = comb.map(function(arr){ 20 var v1 = arr[0], 21 v2 = arr[1], 22 $li = $('<li />').attr({ 23 'data-array1': v1, 24 'data-array2': v2, 25 }), 26 text = [v1, v2].join(' × '); 27 28 return $li.text(text); 29 }); 30 31 $ul.append($list); 32}; 33 34$('#createList').on('click', function() { 35 createList(); 36}); 37

投稿2017/01/22 11:47

編集2017/01/22 11:54
yamato_hikawa

総合スコア2092

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問