JavaScriptでオブジェクトの配列をコピーしソートする

JavaScriptでオブジェクトの配列をソートするには、array.sort() メソッドを使う。

以下のオブジェクトを考える。

// JavaScript
var tag = {"tag_key":"125_1364971147327", "tag_memo":"2013/04/03", "tag_name":"Cafe"};
//// オブジェクトの要素には、tag.tag_key や tag['tag_key'] でアクセスする

これと同じ形式のオブジェクトが配列になっているとする。

// JavaScript
var tags[0] = {"tag_key":"125_1364971147327", "tag_memo":"2013/04/03", "tag_name":"Cafe"};
var tags[1] = {"tag_key":"290_1364960957964", "tag_memo":"2013/04/03", "tag_name":"買い物"};
var tags[2] = ...

このオブジェクトの配列に対し、あるプロパティ(例えばtag_name)でソートしたいしたいときは、sort()を使う。このメソッドは引数に関数を指定することができるので、以下のようにすることで、ソートが実行できる。

// JavaScript
tags.sort(function(a, b) {
  return ( a.tag_name > b.tag_name ? 1 : -1);
});

この方法では配列そのものが変更されてしまうので、元の配列を残したいときはconcat()メソッドを使ってコピーしておく。

// JavaScript
var tags_view = tags.concat();
// var tags_view = tags; では参照がコピーされるだけなので意図した「コピー」にはならない。
tags_view.sort(function(a, b) {
  return ( a.tag_name > b.tag_name ? 1 : -1);
});
カテゴリー: Tips タグ: パーマリンク

JavaScriptでオブジェクトの配列をコピーしソートする への1件のフィードバック

  1. ピンバック: JavaScriptでオブジェクトの配列を filter() を使ってフィルタリングする | Try Lifelog

コメントは停止中です。