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

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

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

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

Q&A

解決済

5回答

391閲覧

js keyを配列みたいにしてforEachで連想配列にしたい

L85A2

総合スコア60

JavaScript

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

0グッド

0クリップ

投稿2018/10/25 04:30

編集2018/10/25 04:32

js

1 var keyArray = ["赤","青","黄"] 2 3 var singou = {} 4 keyArray.forEach(function(value,index){ 5 singou.value = index 6 }) 7 8 console.dir(singou) 9 10 singou={ 11 "赤":1 12 "青":2 13 "黄":3 14 }

みたいな感じにしたいです。
このコードではkeyArrayがstringの配列なのでsingou.value = indexでエラーが起きてしまいます。
keyとして配列に保持する為にはどうしたらいいでしょうか?
もしくはString配列からkeyにするためにはどうしたらよいでしょうか?

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

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

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

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

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

guest

回答5

0

Mapではだめでしょうか?

var keyArray = ["赤","青","黄"] var singou = new Map(); keyArray.forEach((v,i) => singou.set(i, v)); singou.forEach((v, k) => console.log(`key=${k}, value= ${v}`)); //"key=0, value= 赤" //"key=1, value= 青" //"key=2, value= 黄"

投稿2018/10/25 04:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

これでもいけます

javascript

1var keyArray = ["赤","青","黄"] 2var singou = {} 3keyArray.forEach(function(value,index){ 4 Object.defineProperty(singou, value, {value:index+1,enumerable:true}); 5}); 6console.log(singou);

投稿2018/10/25 04:40

編集2018/10/25 04:40
yambejp

総合スコア114825

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

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

0

こんにちは。

以下でいけると思います。ちなみに forEach に渡す関数の第2引数のインデクスは 0 始まりです。

javascript

1var keyArray = ["赤","青","黄"]; 2 3var singou = {}; 4 5keyArray.forEach(function(value,index){ 6 singou[value] = index + 1; 7}); 8

動作確認のため以下にも上げておきました。

参考になれば幸いです。

投稿2018/10/25 04:39

jun68ykt

総合スコア9058

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

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

0

singou[value]

-- reduce
かぶりまけたので別解。宣言だけするのはムダ

javascript

1const singou = ["赤","青","黄"].reduce(function(previousValue, currentValue, index, array) { 2 previousValue[currentValue] = index; 3 return previousValue; 4 },{}); 5 6console.dir(singou)

投稿2018/10/25 04:33

編集2018/10/25 04:38
papinianus

総合スコア12705

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

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

0

ベストアンサー

変数の値をキーとして扱いたいなら

JavaScript

1singou[value] = index;

ですね。

投稿2018/10/25 04:32

dice142

総合スコア5158

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

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

L85A2

2018/10/25 04:36

一番早かったのでベストアンサーです
L85A2

2018/10/25 04:36

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問