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

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

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

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

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

Q&A

解決済

3回答

1176閲覧

JavaScriptで配列検索、条件に合う全ての要素のインデックスを取得したい

oika77

総合スコア184

JavaScript

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

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

0グッド

0クリップ

投稿2020/11/07 05:33

編集2020/11/07 05:36

質問は表題の通りです。

javascript

1コード 2a=["0","0","0","1","0","2","0","0","0","0","1","0"]//ある配列があり、一応str型 3//検索することによって、出力が以下 43 5 10 5//つまり0でない要素のインデックスを取得したいです。

考えたこととしてはindexOfを使って0のインデックスを全て取得して、全体のインデックスから取り除くということは思いつきましたが、工程が多すぎるのかなと思っています。

それからこんなサイトもありました。

もっと良い方法がありましたら、教えてください。

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

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

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

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

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

Zuishin

2020/11/07 05:43

filter メソッドでは何か不都合がありますか?
guest

回答3

0

ベストアンサー

やろうと思えばこんな書き方とか?

JavaScript

1const dist = a.flatMap((val, index) => val !== "0" ? index : []);

投稿2020/11/07 05:49

q_sane_q

総合スコア610

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

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

oika77

2020/11/07 06:14

ありがとうございます。
guest

0

https://jsbin.com/qareyoyewi/edit?html,js,console

js

1a=["0","0","0","1","0","2","0","0","0","0","1","0"]; 2 3const output = [...a.entries()].filter(([i, v]) => { 4 return v !== "0" 5}).map(([i, v]) => i); 6 7console.log(output); 8// [3, 5, 10]

投稿2020/11/08 08:43

編集2020/11/08 12:09
standard-soft

総合スコア197

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

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

oika77

2020/11/09 08:18

ありがとうございます。
guest

0

javascript

1const b=a.map((x,y)=>[x,y]).filter(x=>x[0]*1).map(x=>x[1]); 2とか 3const c=a.reduce((x,y,z)=>(y*1 && x.push(z),x),[]);

投稿2020/11/07 05:43

編集2020/11/07 05:48
yambejp

総合スコア116724

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

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

oika77

2020/11/07 06:14

いろいろな方法があるのですね、勉強になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問