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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

JavaScript

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

Q&A

解決済

1回答

655閲覧

arrayを対応させた状態でランダムにしたい

A111

総合スコア13

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

JavaScript

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

0グッド

0クリップ

投稿2020/10/17 01:56

#実現したいこと
現在JavaScriptでCSVを読み込み,ランダムにした状態でarrayを作成しました.
さらにそれをspelling, meaning を入れ替えた状態にしたいのですが, 数値を変更したり等書き換えてみたところ, spelling, meaningが一括で入れ替わってしまうなどバラバラにrandomにすることができませんでした.
文字だけの説明ではわかりにくいと思いますので実現させたいことをこの下に詳しく記載しております.ご確認いただけますと幸いです.

以下コード

js

1 let data; 2 window.addEventListener('DOMContentLoaded', ()=>{ 3 const myfile=document.querySelector('#output_csv'); 4 myfile.addEventListener('change',async e=>{ 5 var f=e.target.files[0]; 6 var fr=new FileReader(); 7 var aaa =await new Promise((resolve)=>{ 8 fr.addEventListener('load',()=>{ 9 const content=fr.result; 10 data=content.split(/[\r\n]+/).map(x=>(y=x.split(","),{spelling:y[1],meaning:y[0]})); 11 resolve(aaa); 12 }); 13 fr.readAsText(f) ; 14 }); 15 data.sort (function (a, b) {return Math.floor (Math.random () * 3) - 1 ;}) ; 16 console.log(data); 17 }); 18 });

これでCSVを処理するとどうなるのかというと,

元CSV

csv

1apple,りんご 2banana,バナナ 3orange,オレンジ 4happy,幸せ 5hey,へい 6color,色 7function,関数 8red,赤 9blue,青 10black,黒

処理したarray

console

1Array (10) 20 {spelling: "幸せ", meaning: "happy"} 31 {spelling: "黒", meaning: "black"} 42 {spelling: "りんご", meaning: "apple"} 53 {spelling: "バナナ", meaning: "banana"} 64 {spelling: "青", meaning: "blue"} 75 {spelling: "オレンジ", meaning: "orange"} 86 {spelling: "へい", meaning: "hey"} 97 {spelling: "色", meaning: "color"} 108 {spelling: "関数", meaning: "function"} 119 {spelling: "赤", meaning: "red"}

こんな感じになります。

ここでさらにspelling, meaning を入れ替えて

Array (10) 0 {spelling: "happy", meaning: "幸せ"} 1 {spelling: "黒", meaning: "black"} 2 {spelling: "りんご", meaning: "apple"} 3 {spelling: "banana", meaning: "バナナ"} 4 {spelling: "青", meaning: "blue"} 5 {spelling: "オレンジ", meaning: "orange"} 6 {spelling: "hey", meaning: "へい"} 7 {spelling: "color", meaning: "色"} 8 {spelling: "関数", meaning: "function"} 9 {spelling: "red", meaning: "赤"}

この様にspelling, meaningをランダムに入れ替えたいです.
解決策等具体的にお分かりの方, ご回答いただけますと幸いです.
よろしくお願いいたします.

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

提示されたコードでは、spellingとmeaningが固定されているように見えます。ここです↓

JavaScript

1data=content.split(/[\r\n]+/).map(x=>(y=x.split(","),{spelling:y[1],meaning:y[0]}));

y[0]とy[1]のどちらをspellingに入れ、どちらをmeaningに入れるかも乱数でランダムにすれば良いのでは無いでしょうか。

JavaScript

1data = content.split(/[\r\n]+/).map(x => { 2 const y = x.split(","); 3 if (Math.random() < 0.5){ 4 y.reverse(); // 50%の確率で逆にする 5 } 6 return {spelling: y[1], meaning: y[0]}; 7});

投稿2020/10/17 07:57

Automatic9045

総合スコア313

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

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

A111

2020/10/17 08:31

ご回答いただきありがとうございます。 訂正すべき箇所をご提示いただいた上, 具体的な解決策をお教えいただき, 実現することができました。 本当にありがとうございました!
Automatic9045

2020/10/17 08:38

解決されたようで良かったです。 引き続き開発頑張って下さいね!
A111

2020/10/17 08:47

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問