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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

JavaScript

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

1222閲覧

indexを指定した配列の値を利用して、別の配列から値を取り出して新しい配列を作りたい

takushikai

総合スコア12

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

JavaScript

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/11/09 05:47

JavaScriptでindexを指定した配列(名前:index)があり、2次元配列(名前:data)から指定したindexの部分だけ取り出して新しい配列(名前:arr)を作りたいです。

試してみたコード

JavaScript

1let data = [["11/5",1],["11/6",1],["11/7",2]]; 2let index = [0,1]; 3let arr = []; 4 5 for (let i=0; i<index.length; i++){ 6 arr.push(data[index[i]]); 7 } 8//arrは [["11/5",1],["11/6",1]] となってほしいのですが、実際には単に2となります。

上記のくらい短ければ、

JavaScript

1arr.push(data[0]); 2arr.push(data[1]);

としてもいいいですが、実際にはもっと長い配列を使う予定です。どのようにすればよいでしょうか?ご教授お願い致します。

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

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

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

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

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

takushikai

2020/11/09 06:06

その質問とは少し違います。ややこしくて申し訳ありません。
Zuishin

2020/11/09 06:13

> 横方向の「行」は抽出できても縦方向の「列」の抽出の仕方がわかりません。 と書いてあるので、もともと解決している問題にしか見えませんでした。
guest

回答3

0

ベストアンサー

Array.prototype.filter使えばできます。

JavaScript

1const result = data.filter((_,i) => index.includes(i));

Array.prototype.filter()
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

投稿2020/11/09 05:53

draq

総合スコア2577

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

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

takushikai

2020/11/09 06:05

回答ありがとうございます。filterを使ったほうが簡潔に書けるんですね。
guest

0

普通に参照できると思いますが・・・

投稿2020/11/09 05:52

yambejp

総合スコア116734

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

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

yambejp

2020/11/09 05:52

let data = [["11/5",1],["11/6",1],["11/7",2]]; let index = [0,1]; let arr = []; for (let i=0; i<index.length; i++){ arr.push(data[index[i]]); } console.log(arr);
takushikai

2020/11/09 06:07

変数名を変更したら動きました、、、変数名が当たっていたみたいです。ご指摘ありがとうございます。
guest

0

//arrは [["11/5",1],["11/6",1]] となってほしいのですが、実際には単に2となります。

とありますが、提示いただいた時点のコードで意図した挙動になっていませんか?

js

1let data = [["11/5",1],["11/6",1],["11/7",2]]; 2let index = [0,1]; 3let arr = []; 4 5for (let i=0; i<index.length; i++){ 6 arr.push(data[index[i]]); 7} 8 9console.log(arr[0]); 10// --> ["11/5", 1] 11console.log(arr[1]); 12// --> ["11/6", 1]

投稿2020/11/09 05:52

nekoniki

総合スコア2411

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

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

takushikai

2020/11/09 06:07

ご連絡ありがとうございます。変数名を変更したら普通に動きました。変数名が他と当たっていたみたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問