下記のようなJSONデータを50音順でソートしたいのですが、
どうすれば良いでしょうか?

{
 "human": {
 "artist": [
  {
  "link": "goo1.html",
  "name": "小田 和正",
  "yomi": "おだかずまさ"
  },
  {
  "link": "goo2.html",
  "name": "岩佐美咲",
  "yomi": "いわさみさき"
  },
  {
  "link": "goo3.html",
  "name": "指原莉乃",
  "yomi": "しのはらりの"
  },
 ]
 }
}

このQ&Aに関連する最新のQ&A

A 回答 (1件)

javascriptには配列をソートするメソッドがありますので、それを利用すればよろしいかと。




例えば、yomi順にソートする例
(以下の例では、直接並び替えずにtest配列に移し変えてソートしています)

var json = {
 "human": {
  "artist": [
   {
    "link": "goo1.html",
    "name": "小田 和正",
    "yomi": "おだかずまさ"
   },
   {
    "link": "goo2.html",
    "name": "岩佐美咲",
    "yomi": "いわさみさき"
   },
   {
    "link": "goo3.html",
    "name": "指原莉乃",
    "yomi": "しのはらりの"
   }
  ]
 }
};


// 並べ替え用の配列に格納
var i, test = [];
var artist = json.human.artist;
var n = artist.length;

for(i=0; i<n; i++)
 test[i] = [ artist[i].yomi, artist[i] ];


// 並べ替え
test.sort();
for(i=0; i<n; i++)
 test[i] = test[i][1];


// 結果をテスト表示してみる
var t, result = "";
for(i=0; t=test[i++];)
 result += (result?"\n":"") + "link=" + t.link + " / name=" + t.name + " / yomi=" + t.yomi;

alert(result);
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
期待した通りに動作しました。
大変参考になりました!

お礼日時:2012/06/28 00:38

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qidを使わずにonclickで自身の要素取得

javascriptで
<a href="XXX.XXX" title="ゴール" onclick="element()">test</a>
function() {
idを使わずにここにtitle属性のゴールを習得する方法を記述したいのですが、わかりません
よろしくお願いします
}

Aベストアンサー

こんにちは。


==== HTML
<a href="" title="ゴール" onclick="getTitle(this);return false;">test</a>
<a href="" title="スタート" onclick="getTitle(this);return false;">test2</a>


==== JavaScript
function getTitle ( obj ) {
var title = obj.getAttribute('title');
alert ( title );
}

こういうことでしょうか。
違っていたらすみません。

Qjavascriptでセレクトボックスの"selected"を動的につ

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select>月

<select name='day'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
<option value='14'>14</option>
<option value='15'>15</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
<option value='20'>20</option>
<option value='21'>21</option>
<option value='22'>22</option>
<option value='23'>23</option>
<option value='24'>24</option>
<option value='25'>25</option>
<option value='26'>26</option>
<option value='27'>27</option>
<option value='28'>28</option>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日


このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか?

よろしくお願いします。

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8...続きを読む

Aベストアンサー

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select>月

<select name='day'>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日
</div>
</form>

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<opt...続きを読む

Qで配列(複数の要素)を渡したいとき?

こんにちわ,

今HTML+PHPで
$hoge[]にいくつかの要素が入っているとき,
それをあるfoo.phpというページに渡したいとき,
echo '<form action="foo.php" method="POST">';
echo '<input type="hidden" name="$hoge[]" >';
echo '</form>';
としたのですが,うまくいきません。

どうしたらよろしいでしょうか。

Aベストアンサー

nameじゃなく、valueでは?
あとやるなら、
for($i=0;$i<count($hoge);$i++){
print "<input type=\"hidden\" name=\"$hoge[$i][0]\" value=\"$hoge[$i][1]\">";
}
とか?

Qテキストボックスに数字しか入力できないようにするには?

タイトルの通りなのですが、あるテキストボックスに数字しか入力できないようにしたいのですが可能でしょうか?また、

「あいうえお 12345 「」:・、¥・」

というような文字列をコピーし、そのテキストボックスにペーストした際にも数字の12345だけが残るといった事も実現したいのですが…

どなたかご存知の方いらっしゃいましたら教えて頂けると幸いです。

Aベストアンサー

>英数字

では、こんな感じで

<input type="text" onKeyup="this.value=this.value.replace(/[^0-9a-z]+/i,'')">

Q

<div ~ </div> で囲まれたテキスト文字を取得する方法はありますか?

「 <div class="TEST" id="TEST">?</div> 」

上記のような、?部分の表示内容によって、処理を分けたいのです。

Aベストアンサー

手っ取り早いのはinnerHTMLとか・・・
きちんとやるならDOMで処理が必要

<script>
function check(){
var tag=document.getElementById("TEST");
alert(tag.innerHTML)
}
</script>
<div class="TEST" id="TEST">?</div>

<input type="button" value="check" onclick="check()">

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

Q読み(あ行~わ行)ごとに分ける方法

PHPで、ある配列の内容(ひらがな)を、読み(あ行~わ行)で分けて配列に代入したいのですがどのようにすればよいかわかりません。
どなたかご教示いただけませんでしょうか?
PHPのバージョンは5.2.5です。

具体的には以下のようにしたいです。


$iro = array('おれんじ','あか','きいろ','みどり','きみどり','くろ','しろ','ぴんく','びりじあん');

↑この配列から、↓このようにしたいです。
 
Array
(
 [あ行] => Array
  (
   [0] => おれんじ
   [1] => あか
  )
 [か行] => Array
  (
   [0] => きいろ
   [1] => きみどり
   [2] => くろ
  )
 [ま行] => Array
  (
   [0] => みどり
  )
 [さ行] => Array
  (
   [0] => しろ
  )
 [は行] => Array
  (
   [0] => ぴんく
   [1] => びりじあん
  )
)

Aベストアンサー

文字コードが UTF-8 なら下記のプログラムで上手く行きました
$result が仕分け後の配列になります


$iro = array('おれんじ','あか','きいろ','みどり','きみどり','くろ','しろ','ぴんく','びりじあん');

$kana = array(
"あ行" => "[あ-お]",
"か行" => "[か-こが-ご]",
"さ行" => "[さ-そざ-ぞ]",
"た行" => "[た-とだ-ど]",
"な行" => "[な-の]",
"は行" => "[は-ほば-ぼぱ-ぽ]",
"ま行" => "[ま-も]",
"や行" => "[や-よ]",
"ら行" => "[ら-ろ]",
"わ行" => "[わ-ん]",
"その他" => ".*"
);

$result = array();
foreach ($iro as $value) {

$match = false;
foreach ($kana as $index => $pattern) {
if (preg_match("/^" . $pattern . "/u", $value)) {
$result[$index][] = $value;

$match = true;
break;
}
}
}

print_r($result);

文字コードが UTF-8 なら下記のプログラムで上手く行きました
$result が仕分け後の配列になります


$iro = array('おれんじ','あか','きいろ','みどり','きみどり','くろ','しろ','ぴんく','びりじあん');

$kana = array(
"あ行" => "[あ-お]",
"か行" => "[か-こが-ご]",
"さ行" => "[さ-そざ-ぞ]",
"た行" => "[た-とだ-ど]",
"な行" => "[な-の]",
"は行" => "[は-ほば-ぼぱ-ぽ]",
"ま行" => "[ま-も]",
"や行" => "[や-よ]",
"ら行" => "[ら-ろ]",
"わ行" => "[わ-ん]",
"その他" => ".*"
);

$result = ar...続きを読む

Qhtml で 変数を定義できますか?

html(できればjava不使用)で変数に文字列をいれてつかう、またはそれに近いことはできないでしょうか?

例**************************
$color1="#000000"

<tr bgcolor=$color1>内容1<tr>
<tr bgcolor=$color1>内容2<tr>
****************************
みたいな感じです

Aベストアンサー

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<meta name="author" content="ORUKA1951">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rev="made" href="mailto:orika1951@hoge.com" title="send a mail" >
<link rel="START" href="../index.html">
<style type="text/css">
<!--
.parson1:before{content:"田中";}
p.age1:after{content:"36歳";}
-->
</style>
</head>
<body>
<h1>サンプル</h1>
<p class="parson1">は男の子</p>
<p class="parson1 age1">の年齢は</p>
<p>私の彼氏は<span class="parson1">君だよ</p>
</body>
</html>

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<met...続きを読む

QJavaScriptで文字列の特定文字以降を取得する方法

変数 url に以下のような文字列が代入されています。
var url='http://www.example.com?id=2&page=3';

ここから?以降の文字列だけを取得したいのですが、どのようにすれば良いのでしょうか?
「id=2&page=3」←このような結果が欲しいです。

ブラウザのurlから直接?以降を取得するには location.search を使えば良いというのは調べてわかりましたが、変数に文字列としてurlが代入された場合の方法がわかりません。

ご回答よろしくお願いいたします。

Aベストアンサー

文字列から抽出するのであれば、indexOfを使うか正規表現かでしょうね
深く考えなければ前者、複雑なデータを取りたいなら後者でしょうか

<script>
var url='http://www.example.com?id=2&page=3';
if(url.indexOf("?")>=0){
var str1=url.substring(url.indexOf("?")+1,url.length);
}
document.write(str1+"<br>");

var reg=new RegExp("\\?(.+?)$");
if(url.match(reg)){
var str2=url.match(reg)[1];
}
document.write(str2);
</script>

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報