• ベストアンサー

.split()の語順を変数に代入し.sort()

var word = 'this is test'; word.split(' '); // [this, is, test] この配列の語順を変数に代入しつつ、アルファベット順に並び替え、最終的に以下のようにしたいと考えています。 <span data-n="2">is</span> <span data-n="3">test</span> <span data-n="1">this</span> よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.2

本題ではないですが、"This is a test" になっていないのが気になります…。 --- var word = 'this is test. this is test.', words = word.split(' '); // [this, is, test] for (var i = 0, l = words.length; i < l; ++i) { words[i] = {index: i, value: words[i]}; } words.sort(function (a, b) { return a.value > b.value; }); console.log(words); --- 実際に "This is a test" にすると期待通りに動作しないので、大文字を含むなら String#toLowerCase で小文字化するなり、String#charCodeAt を回す等の対策は必要になります。 # Re: donutshopさん

donutshop
質問者

お礼

ご回答ありがとうございました。 おかげさまで、希望通りに動作させることができました。

その他の回答 (1)

  • sanzero
  • ベストアンサー率56% (58/102)
回答No.1

splitして作った配列(words)と それとは別にsortした配列(sorted)を用意し sortした配列をforで回して indexOfでwordsの何番目かを取得する。 同じ単語がない場合に使えます。

donutshop
質問者

お礼

ありがとうございました。

関連するQ&A

  • ポインタ変数への値代入とアドレス値の代入について

    ポインタの扱いについて2点ほどありますが教えてください。 質問1:ポインタへの値代入    short data1[5];    short *pointa;     pointa = data1    (1)*(pointa + 1)=100;    (2)*pointa + 1 = 100;   という式があった場合、    (1)はdata1[1]の配列に100を代入する    (2)は命令違反的なことでコンパイルエラーが発生する   という理解でよろしいでしょうか? 質問2:アドレス値の代入    int var;(varのアドレス値は100番地)    int *ptr;    *ptr = &var; という式があった場合    ポインタ変数のptrには、番地が入るのではなく、100という数値が入るという判断でよろしいいでしょうか?    長い質問となっていますので質問1,2どちらか一方でも、余裕のある方がおりましたら両方についてご解答のほどよろしくお願いします。

  • jqueryの変数にリクエストデータを代入したい

    現在独学でcakephpを使ってブログの作成をしています。 その中でjqueryをつかっているのですが、jqueryの変数に$this->request->dataを代入することは可能でしょうか? たとえば、 var one = '<?php echo $this->request->data('Post.1.title'); ?>'; こうした場合はalertでうまく表示されたのですが、 var two = $('input#title').attr('class'); var three = $('input#title').length; var one = '<?php echo $this->request->data("Post.' + three + '.' + two + '"); ?>'; こうするとalertではなにも表示されません。(真っ白です) 書き方が違うんだろうなとは思うんですが、仕事が休みの日に家でやっているため質問できる相手もおらず、ネットで検索してもイマイチ分からず・・・ 初歩的な質問で申し訳ないのですが、どなたかご指摘等をよろしくお願いいたします。

  • javascriptのsplitでエラーが・・・

    valueの値をsplitを使って連想配列に変形しようと思ったのですが、、エラーが出てお手上げ状態です。上手く動かす方法はないでしょうか? ブラウザはie9を使っています。 var value = "mode=test&text=test&amount=123"; var value2 = value.split("&"); var response = ""; for(var i=0; i<=value2.length; i++) { value3 = value2[i].split("="); response[value3[0]] = value3[1]; } document.write(response);

  • listで変数代入

    あらかじめ、データ行のデータ数がわかっていれば、listで変数へ代入してあげれば問題ないと思いますが、データによってはデータ行のデータ数が10個とかそれ以上になると、その分だけlist($data_○.......................)とすると面倒なので、簡単に行のデータ数をカウントしてlist関数を使った方法で処理する方法はないのでしょうか? $data_01とかアンダーバー末尾数字みたいな方法でlist($data_01,$data_02,$data_03,,,,,,,,,,,,,,,,,,,,,)として変数に代入したいで教えて下さい。 sample.csv りんご1,ばなな1,いちご1 りんご2,ばなな2,いちご2 りんご3,ばなな3,いちご3 define(csvdata, "sample.csv"); $data = file(csvdata); for ($i = 0; $i < count($data); $i++) { list($data1,$data2,$data3) = split(",", $data[$i]);

    • ベストアンサー
    • PHP
  • VBA  改行でsplitしたい

    現在ウェブページから取得した文字列を改行部分でsplitして配列にしたいと考えています。 ob10-6<br /> this is test data ↑このような文字列を取得し、<br />部分で分割したいのですが、 この文字列がtmpという変数に入っているので、 x = split( tmp,"<br />") により、配列xの中に入れようとしたところ、どうも<br />部分で分割されていないようなのです。 vbCrLfなどを代わりに使用してみましたが分割できません。。 なぜ分割できないか、また、分割の仕方を教えていただけると幸いです。 よろしくお願いいたします。

  • jspからjavascriptの変数引継ぎ

    jspでデータベースからデータを取ってきて格納した配列をjavascriptでも同じように変数として扱いたいのですがどうすればいいでしょうか? javascriptによってオンマウス時に枠がポップアップし、javascript内で設定した文字を枠内に表示しようとしているため、jspからデータを引き継ぎたいのです。 jspではtitleとhonbunは配列で <form name="form_title"> <input type="hidden" name=title value="<%= title %>" > </form> <form name="form_honbun"> <input type="hidden" name=honbun value="<%= honbun %>" > </form> このように名前をつけ、javascriptでは var taitoru[]= document.form_title.title.value; var honbun[]= document.form_honbun.honbun.value; このように変数に代入しています jsp側ではSPANでオンマウス時にjavascriptを呼び出し、javascriptでは文字が配列のhonbun[0]等をポップアップした枠の中で表示させるようにさせたいのですが 枠そのものがポップアップしません 上記のjavascriptでの変数への代入部分をコメントアウトすると、枠自体は表示されます 配列を丸ごとjavascriptで配列に代入できないのであれば、1データずつ引き継ぐという方法でもいいのですが、どのようにjavascript側で代入すればいいのでしょうか?

  • char型のポインタ配列に変数の値の代入できる?

    c言語でchar型のポインタ配列に変数の値を代入できるのでしょうか? 例えば int A[10]={1,2,3,4,5,6,7,8,9,10}; char *C[10]; のCに配列Aの中のデータを文字列として入れたいのです。 C[0]="A[0]"としてもA[0]という文字列が代入されてしまうだけなので… よろしくお願いします。

  • CSVファイル 読み込み後のsplit

    loadVarsを使い、CSVファイルを読み込んだ後で、 そのテキストを一度変数に落としてから splitしようとすると、何も返って来ません。 ----- var nText = String(bSuccess_text); gMessageList = nText.split("\r\n"); ←ここ ----- ※bSuccess_text、nText にテキストが来ているのは確認できています。 ※テキストはwindows改行であることを確認しています。 ※splitの値をカンマとか、別の物(1文字のもの)にしてみても同じく何も返って来ません・・。 ※変数に落とさない状態でもダメで、念のためにつけているstring() を外してもダメでした。 どなたかご存知の方がいらっしゃいましたら、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • DOSバッチで変数の値を変数名に設定したいのですが、可能でしょうか?

    DOSバッチで変数の値を変数名に設定したいのですが、可能でしょうか? 例として、以下のようにVARという変数に対して、ある文字列を設定し、その文字列の名前の変数の値を別の変数に代入したいのです。 set VAR="TMP" if /i "%VAR%"=="TMP" (SET TEST=%%VAR%%) echo %TEST% ここで求めている挙動は、SET TEST=%%VAR%%の命令によって SET TEST=%TMP% → SET TEST=C:\Windows\Temp のように展開されればいいのですが、実際はSET TEST=%VAR%となってしまいます。 なにか良い方法がないでしょうか?

  • rubyにおける変数と代入のメモリの様子について

    Rubyの変数と代入演算は、メモリについてどのような扱いになっているのでしょうか。2点ほど疑問電があります。 1点目:代入演算は変数にアドレスを渡しているのか RubyLifeのRuby入門のサンプルをみて学習していたところ疑問がわきました。 http://www.rubylife.jp/ini/var/index4.html を参照しながら示します。 str1 = "Tokyo" str2 = str1 str1 << ",Japan" とやるとstr1もstr2も"Tokyo,Japan"となることから、rubyでの代入演算はアドレスを代入してると考えました。 2点目:新しくオブジェクトを代入すると別メモリ領域において、そのアドレスを代入しているのか str1 = "Tokyo" str2 = str1 str1 = "Osaka" とやると、str1は"Osaka"、str2は"Tokyo"となります。 前述の参照渡と考えるとstr2も"Osaka"となっているはずですが違いました。 ここで解説に(引用はじめ) なお2つの変数が同じオブジェクトを指し示した後で、どちらかのオブジェクトに新しいオブジェクトを 代入した場合は、代入された変数が指し示すオブジェクトだけが変更されるだけです。(引用おわり) とあります。 このことをふまえると、新しいオブジェクトを変数に代入するというのは、別のメモリ領域をつくってデータを置いてから、そのアドレスを変数に代入している、と考えました。 これら2つの考えと実際の仕組みは一致しているのでしょうか、と言うのが質問です。 質問点をまとめると、Rubyにおいて変数に対して ・代入演算はアドレスを代入しているのか(Cでいうポインタの扱いなのか) ・新しいオブジェクトを代入するときには、新メモリ領域を作ってデータを入れてそのアドレスを代入しているのか という点です。 ついこの間はじめたばかりの初心者ですが、どうかご教授よろしくお願いいたします。

    • ベストアンサー
    • Ruby

専門家に質問してみよう