下記のような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と関連する良く見られている質問

QMySQLで複数データベースの検索/ソートについて

お世話になっております。
PHP4.4.1+MySQL4.1.15を使用しております。
複数のデータベースに含まれる複数のテーブルをひとつの大きなテーブルとして検索/ソートする方法はありませんでしょうか?
結合ではなく、全レコードを全て単体として検索/ソートをかけたいのです。
それぞれのデータベースに含まれるテーブルに、共通の項目があり、その共通の項目順にソートしたり、絞込をかけたりしたいのですが、調べてみても、どうしても結合(JOIN)に行き着いてしまいます。
JOINによる結合だと、共通の項目以外のレコードが表示されないので、これでは意味をなしません。
ご教授の程、お願い致します。

Aベストアンサー

UNIONのこと?
テーブルをまたがるとさすがに期待するパフォーマンスがでないかも
テーブル設計によるチューニングの問題ですからね

>JOINによる結合だと、共通の項目以外のレコードが表示されない

完全外部結合はサポートされていませんがやり方によっては全レコードを拾えますね。

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/union.html

QJSONデータを50音で選択表示させたい

下記JSONデータの中から、
50音に応じた内容を選択表示させたいのですが、
どうすれば良いでしょうか?

■具体例
・「チェックボックス」もしくは「プルダウン」で、「お」を選択したら、下記データを表示させたい
  {
  "link": "goo1.html",
  "name": "小田 和正",
  "yomi": "おだかずまさ"
  },


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

・jQueryのAJAX通信とかでやるのでしょうか?
(実現出来れば、手段は何でもいいです)

下記JSONデータの中から、
50音に応じた内容を選択表示させたいのですが、
どうすれば良いでしょうか?

■具体例
・「チェックボックス」もしくは「プルダウン」で、「お」を選択したら、下記データを表示させたい
  {
  "link": "goo1.html",
  "name": "小田 和正",
  "yomi": "おだかずまさ"
  },


■元データ(JSON)
{
 "human": {
 "artist": [
  {
  "link": "goo1.html",
  "name": "小田 和正",
  "yomi": "おだかずまさ"
  },
  {
  "link": "goo2.html",
  "name": "岩佐...続きを読む

Aベストアンサー

こんにちは。

先のサンプルを複数件あった場合を考慮してみました。
前のはコメントで残っているので参考にしてみてください。

forの中で一致するものを探して、一致したら配列に入れるなり、書き出し用の文字列に追加してあげるなりすればOKです。

Qエクセルで複数行に渡ったセルのソートの仕方

エクセルでソートの仕方に関する質問です。
住所録のようなものを作っているのですが一人一行だけではなく
一人で複数行を使って記入しているのもあります。

通常の一行に一人の内容でのソートは解るのですが、一人で二行も
三行も使った場合、従来の方法だとソートができないのです。
複数行を一人の人間の項目だと認識させないとダメなのですが
どのようにしてソートすればいいのでしょうか?

Aベストアンサー

>人によって一行の人や二行、三行と行数が違うのです。
以下のように理解しております。

Cさん 1行目
Cさん 2行目
Bさん 1行のみ
Aさん 1行目
Aさん 2行目
Aさん 3行目
  という住所録を

Aさん 1行目
Aさん 2行目
Aさん 3行目
Bさん 1行のみ
Cさん 1行目
Cさん 2行目
  に並べ替える。これで合っていますか?

同じ人の1行目~n行目の順番を保ったまま並べ替えるためにB列に「その人の行番号」を生成する関数が

データの並びが#01の通りだとして
 =IF(A2=OFFSET(A2,-1,0),OFFSET(B2,-1,0)+1,1)
です。B2にこの式を貼りつけして、そのセルをデータの下までコピーします。

氏名欄は空白ではダメです。必ず名前を入れてください。ただし上の行と名前が一致するときに、見えないようにする方法が#01の条件付き書式です

先頭の氏名欄(A2とします)を選択して
「書式」→「条件付き書式」を選択して、「値が」を「数式が」に変更します。「式」には =B2>1 のとき
書式で文字色を白色に設定します。A2セルをコピーして他のセルに「編集」→「形式を選択して貼り付け」→「書式」でコピーすると、他のセルにも「条件付き書式」をコピーできます。

後は並べ替えをするだけです。

>もう少し噛み砕いてご説明いただけるとありがたいです。
説明はいたしますが、実際に試していただいて「実際はどのようなデータがあって、どこがうまくいかなかったか」を書いていただかなければ、これ以上の説明は意味がないと思います。

>人によって一行の人や二行、三行と行数が違うのです。
以下のように理解しております。

Cさん 1行目
Cさん 2行目
Bさん 1行のみ
Aさん 1行目
Aさん 2行目
Aさん 3行目
  という住所録を

Aさん 1行目
Aさん 2行目
Aさん 3行目
Bさん 1行のみ
Cさん 1行目
Cさん 2行目
  に並べ替える。これで合っていますか?

同じ人の1行目~n行目の順番を保ったまま並べ替えるためにB列に「その人の行番号」を生成する関数が

データの並びが#01の通り...続きを読む

Qjson 無しで、json を使うプログラムを書きたい。

サーバサイドと、フロントエンジニアが同時に開発を始めると、
json の形式を見てからではないと、ロジックが書きにくいのですが、
それでは、開発が遅くなるので、json の形式がわからなくても書くよい方法は
ありますか ?

Aベストアンサー

卵かニワトリかの話ですか?

サーバーサイドで仕様をきめてしまい
それ以外のデータは受け付けないとすればよいのでは?
そうでなければ何が流れてくるかわからないものを
サーバーサイドの解釈でなんとかするのは無理があるかと。

QEXCEL2000 複数行のソート方法について

EXCEL2000 複数行のソート方法について教えて下さい。

EXCELのVBA(マクロ)にて、シート上の複数行をソートしたいと考えています。

エクセル上では、3つの行に対してソートができるのは知っています。
その操作をマクロに記録して、そのVBAを変更して5つの行に対して
ソートを一括で行おうとしたのですが、エラーとなってしまいました。。。

以下が記録したVBAです
===================================================================
Selection.Sort Key1:=Range("C15"), order1:=xlAscending, _
key2:=Range("G15"), order2:=xlAscending, key3:=Range("h15"), order3:=xlAscending, _
header:=xlGuess, ordercustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, sortmethod:=xlPinYin
===================================================================

このVBAを変更して3つ以上の行に対して一括でソートは出来るでしょうか?
この方法ではやはり無理でしょうか?

VBAを2つに分けてやる方法は最後の策だと考えています。
それ以前に2つに分けて出来るのか分からないのですが。。。

知恵をかして下さい。宜しくお願い致します。

EXCEL2000 複数行のソート方法について教えて下さい。

EXCELのVBA(マクロ)にて、シート上の複数行をソートしたいと考えています。

エクセル上では、3つの行に対してソートができるのは知っています。
その操作をマクロに記録して、そのVBAを変更して5つの行に対して
ソートを一括で行おうとしたのですが、エラーとなってしまいました。。。

以下が記録したVBAです
===================================================================
Selection.Sort Key1:=Range("C15"), order1:=xlAscending...続きを読む

Aベストアンサー

下記のURLをご覧ください。
参考になりますでしょうか?

参考URL:http://t_shun.tripod.co.jp/My_Page/Excel-VBA/vba_page19.htm

QJSONデータをフォームにセットしたい

JSONデータを「jQuery.val」でフォームにセットしたいのですが、うまくいきません。どうしたら良いでしょうか?
具体的には、[",]が削除された状態でセットされます。元は配列ですが、JSONデータへ変換したので、フォームへセット出来ると思っていたのですが…。
JSONは、「ある形式に沿った文字列」という認識でいたのですが、違うのでしょうか?


■コード
$jsondata= json_encode($originalarray)
<script type="text/javascript">
 var result = <?php echo($jsondata) ?>;
 $("input#jsondata").val(result);
</script>

■変数
・$originalarray
Array
(
[0] => ./im/1a.j
[1] => ./im/2.j
[2] => ./im/9_1.j
)

・jsondata
[".\/im\/1a.j",".\/im\/2.j",".\/im\/9_1.jp"]

・フォームにセットされる値
./im/1a.j./im/2.j./im/9_1.jp
→ここに「jsondata」をセットさせたい

JSONデータを「jQuery.val」でフォームにセットしたいのですが、うまくいきません。どうしたら良いでしょうか?
具体的には、[",]が削除された状態でセットされます。元は配列ですが、JSONデータへ変換したので、フォームへセット出来ると思っていたのですが…。
JSONは、「ある形式に沿った文字列」という認識でいたのですが、違うのでしょうか?


■コード
$jsondata= json_encode($originalarray)
<script type="text/javascript">
 var result = <?php echo($jsondata) ?>;
 $("input#jsondata").val(result...続きを読む

Aベストアンサー

> JSONは、「ある形式に沿った文字列」という認識でいた
で、
[".\/im\/1a.j",".\/im\/2.j",".\/im\/9_1.jp"]
では、「はいれつ」としかおもってもらえない。

jQuery なくとも だいにゅうくらいなら かんたん。
Array.forEach とか Array.some とか Array.indexOf とかが、ひつようです。

<!DOCTYPE html>
<title></title>
<meta charset="UTF-8">
<h1>Test</h1>
<form>
 <p>
  <input type="text" name="@hoge" value="0">
  <input type="text" name="@hoge" value="0">
  <input type="text" name="@hoge" value="0">

 <p>
  <select name="@fuga" multiple>
   <option value="aaa" selected>aaa
   <option value="bbb">BBB
   <option value="ccc">CCC
   <option value="ddd">DDD
  </select>
  <select name="@fuga">
   <option selected>aaa
   <option value="bbb">BBB
   <option value="ccc">CCC
   <option value="ddd">DDD
  </select>
  <select name="@fuga">
   <option selected>aaa
   <option value="bbb">BBB
   <option value="ccc">CCC
   <option value="ddd">DDD
  </select>
  <select name="@fuga">
   <option selected>aaa
   <option value="bbb">BBB
   <option value="ccc">CCC
   <option value="ddd">DDD
  </select>

 <p>
  <input type="checkbox" name="@piyo" value="aaa">AAA
  <input type="checkbox" name="@piyo" value="bbb">BBB
  <input type="checkbox" name="@piyo" value="ccc">CCC

 <p>
  <input type="radio" name="@babu" value="aaa">AAA
  <input type="radio" name="@babu" value="bbb">BBB
  <input type="radio" name="@babu" value="ccc">CCC
</form>

<script>

(function () {

 function Controller (form) {
  this.form = form;
 }

 function trim (str) { return str.replace (/^\s+|\s+$/g, ''); }
 
 function Ary (nodeList) { return ('tagName' in nodeList) ? [nodeList]: Array.prototype.slice.call (nodeList, 0); }
 
 function getOptionText (option) {
  return trim (option.hasAttribute ('value') ? option.value: option.text);
 }

 function setOptions (opt) {
  var v = trim (opt.hasAttribute ('value') ? opt.value: opt.text);
  var r = (this instanceof Array)
      ? (-1 < this.indexOf (v))
      : (String (this) === v);

  return opt.selected = r;
 }
 
 function setValue (e, i) {
  var isArray = (this instanceof Array);
  var value = isArray ? this[i]: this;
  var optval;

  switch (e.type) {
  case 'select-one' :
   Ary (e.options).some (setOptions, value); break//途中で中止なので some

  case 'select-multiple' :
   Ary (e.options).forEach (setOptions, value); break;
  
  case 'radio' :
  case 'checkbox' :
   optval = getOptionText (e);
   e.checked =
    (isArray)
    ? (-1 < this.indexOf (optval))
    : (optval === String (this));
   break;

  default :
    e.value = value;
  }
 }


 function parseSetArguments (arg) {
  var es = this.form.elements;

  if (arg instanceof Array) {
   Ary (es[arg[0]]).forEach (setValue, arg[1]);
  }
  else if ('object' === typeof arg) {
   for (var i in arg) {
    if (arg.hasOwnProperty (i)) {
     Ary (es[i]).forEach (setValue, arg[i]);
    }
   }
  }
  else {
   // throw new Error ();
  }
 }

 function setControlsValue (parm/*[name, value], [],..*/) {
  if (1 > arguments.length)
   throw new Error ('引数がない');

  Ary (arguments).forEach (parseSetArguments, this);
 }


 function create (form) {
  if (form && 'FORM' === form.tagName)
    return new Controller (form);

  return null;
 }
 
 Controller.prototype.setControlsValue = setControlsValue; //
 Controller.create = create;
 this.FormController = Controller;
})();


//_______________________

var f = FormController.create (document.querySelector ('form'));

f.setControlsValue ({
 "@hoge" : [123, 456, 789],
 "@fuga" : [["ddd","aaa"], "bbb", "ccc", "bbb"],
 "@piyo" : ["aaa", "ccc"],
 "@babu" : "aaa"
});

</script>

> JSONは、「ある形式に沿った文字列」という認識でいた
で、
[".\/im\/1a.j",".\/im\/2.j",".\/im\/9_1.jp"]
では、「はいれつ」としかおもってもらえない。

jQuery なくとも だいにゅうくらいなら かんたん。
Array.forEach とか Array.some とか Array.indexOf とかが、ひつようです。

<!DOCTYPE html>
<title></title>
<meta charset="UTF-8">
<h1>Test</h1>
<form>
 <p>
  <input type="text" name="@hoge" value="0">
  <input type="text" name="@hoge" value="0">
  <input type="text" name="@h...続きを読む

Qエクセル 複数列選択して一列にソートできますか?

エクセル 複数列選択して一列にソートできますか?
sheet1 A1~G10 のセルに文字列(名前)がランダムに入力されているとします。空白もあります。このデータは他ファイルからコピーしたものとします。これをsheet2のA列にソートすることはできますか?

Aベストアンサー

Sheet1のA1:G10に数式が入っているのなら、回答番号:No.6のコードで試してください。

Qjqgrid で 2から3 階層以上の json データの表示について。

jsonが 2から3 階層以上の場合 jqgrid では、
どのように設定すればよいのでしょうか ?

Aベストアンサー

こんにちは。
jqgridって知らないのと英語が苦手なので、斜めに眺めただけですが…


jqgridのサイトによれば、2階層まではもともと想定されているのでは?
下記参考サイトの、
①  > advanced > Grid as Subgrid
②  > advanced > Subgrid
③  > advanced > Maqster Detail
などがその例になっているように思います。

3層以上の場合は、③のMaster Detailを応用すれば、階層数を増やすだけでそのままいけるのではないでしょうか。
①や②の応用でも可能そうに思いますが、jqgridの他の機能(ソート等)と整合できるように気を付ける必要がありそうですね。


【 参考サイト 】
http://www.trirand.com/blog/jqgrid/jqgrid.html

QEXCEL で複数行を1単位としてソートかけたいのですが

EXCEL で複数行を1単位としてソートかけたいのですが
ご存知の方教えてください。

例えば

第8号
  安部なつみ
  東京都○○区
  090-1234-5678
第3号
  井川遥
  千葉県ちば市○○町
  080-1234-5678
第4号
  上戸綾
  群馬県○○市
  090-9876-5432

こんな感じで 4行1単位のデータを号でソートできませんか?

よろしくお願いします

Aベストアンサー

補助列を使用して、補助列を基準に並べ替える方法で、

第8号 が A1 として 空いている列の1行目へ
=OFFSET(A$1,(INT(ROW(A4)/4)-1)*4,)&"-"&MOD(ROW(A4),4)+1 を、オートフィルで必要分下へ。

第8号 が A3 としたら 空いている列の3行目へ
=OFFSET(A$3,(INT(ROW(A4)/4)-1)*4,)&"-"&MOD(ROW(A4),4)+1 を、オートフィルで必要分下へ。

第8号-1,第8号-2,第8号-3,第8号-4,第3号-1,第3号-2,第3号-3,第3号-4・・・と補助列に表示されます。(数式を、値の貼り付けで削除した方が良いと思います)

QフォームからjQuery,jQuery.jsonを使ってJSONを作っ

フォームからjQuery,jQuery.jsonを使ってJSONを作ってPHPで表示したい。
こんばんは。2、3日ずっと悩んでて解決しないので助けてください。
jQuery,jQuery.jsonを使ってJSONを作成しています。
クリックイベントに
var form = $("#sform");
var json = $(form.serializeArray());
var strJson = $.toJSON(json);
という形をとって
$.ajax({
url : "request.php",
type : "post",
data : strJson,
success: function(request){
$('#result').html(request);
}
});
で送っています。
ただPHP側で
var_dump($_POST);
を行ってもArray ( ) と表示されます。
firebugで見たところpostに入っているデータは以下の通りです。
{"0":{"name":"date","value":"2010/09/15"},"1":{"name":"type","value":"new"},"2":{"name":"bin[]","value":"2"},"3":{"name":"bin[]","value":"3"},"length":4}

var_dumpで表示できないのはなぜでしょうか?
上記で変数json のまま送るとオブジェクトとして送れてvar_dump でも表示できます。
ただ今はjson の勉強をしているので、できればなぜこうなっているのかを理解したいです。
基本的なところで勉強不足かもしれませんが、何かアドバイスなど頂けると嬉しいです。
よろしくお願いします。

フォームからjQuery,jQuery.jsonを使ってJSONを作ってPHPで表示したい。
こんばんは。2、3日ずっと悩んでて解決しないので助けてください。
jQuery,jQuery.jsonを使ってJSONを作成しています。
クリックイベントに
var form = $("#sform");
var json = $(form.serializeArray());
var strJson = $.toJSON(json);
という形をとって
$.ajax({
url : "request.php",
type : "post",
data : strJson,
success: function(request){
...続きを読む

Aベストアンサー

「var json = $(form.serializeArray());
このデータを送るのが一番標準ということでいいのでしょうか?」

=>そうです。わざわざJSONオブジェクトに作り変える必用は無いです。
  .serializeArray()で、jQueryが、JSON形式の文字列データに変換して
  くれてるんです。

「phpで json_decodeしなくてもデータがそのまま二次元配列で渡っている」

=>そう思ってもよいでしょう。正しくは、二次元配列の形式に格納する
  形式の文字列データで渡っているですが

 PHPで、
echo file_get_contents("php://input");
 として見れば、送信されてくる文字列データが見れます。


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

人気Q&Aランキング

おすすめ情報