[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
配列内の要素を、内容によって分割したい、ということがあった。例えば以下のような感じである。
const SEX = ['male', 'female']; var list = [ {sex:0, name:'tTro'}, {sex:1, name:'Hanako'}, {sex:1, name:'Mai'}, {sex:0, name:'Seiji'}, {sex:0, name:'Masaru'} ]; // これを以下のようにする { male: [ {sex:0, name:'Taro'}, {sex:0, name:'Seiji'}, {sex:0, name:'Masaru'} ], female: [ {sex:1, name:'Hanako'}, {sex:1, name:'Mai'} ] }
その為に以下のようなものを書いた。
var groupArray = function(array, groupBy) { var result = {}; var length = array.length; for(var i = 0; i < length; i++) { groupId = groupBy(array[i], i, array); if(! result[groupId]) { result[groupId] = []; } result[groupId].push(array[i]); } return result; }; //使い方 console.log( groupArray(list, function(value){ return SEX[value.sex]; }));
Jenkins のビルドの現状を取得するにはJenkins APIでジョブ情報を取得する - Qiita 等に書かれているようなアクセス方法で採れるのだが、素の JS でとるにはクロスドメイン制限にひっかかる。これをなんとかするための設定を Jenkins 側に書くと問題なく Jenkins のビルド状態を JSON で取得できるようになる。
行うべき設定は単純であり Secure Requester Whitelist Plugin を入れればよい。あとはリンク先のページに解説されている。
日本語でググッても有用な記事が出てこなかったので書いた感じの記事であった。
タイトルそのまんま。公式サイト:jQuery plugin: Tablesorter
何ができるのかは公式サイトのサンプルを見るとよくわかる。
使い方は比較的簡単であり、デモを動かすためのコードも掲載されている。
ただ、サラッと書かれていて最初困った話として You must include THEAD and TBODY tags
な点には注意。特に動的にテーブルを作成して、それをソートしたい場合とか。これで私はなかなか動かせず困ったのであった。
WEB Storage というものをひよんとふにしろ SWEET にしろ多用している。WEB Storage は Cookie に似たような機能だが、色々な面で少し違う。
Cookie は次の方法で更新/取得する。
document.cookie = 'user_name=hiyoko'; //1 document.cookie = 'user_sex=male'; //2 console.log(document.cookie);
document.cookie
に代入することで、1つの Key-Value の組み合わせを更新する。全部が更新されるわけではない。例えば //2 で //1 の結果は上書きされたりはしない。しかし、document.cookie
に全ての Key-Value の組み合わせが格納されている。正直、直感的ではない。
WEB Storage は次の方法で更新/取得する。
localStorage.setItem('user_name', 'hiyoko'); localStorage.setItem('user_sex', 'male'); console.log(localStorage.getItem('user_name'));
Cookie に比較して直感的に見える。なお、 getItem で未定義の値を取得すると null が取れたりする。
SWEET で多用している方法。次のようにすると JS オブジェクトをそのまま入れられる。ただし、関数が含まれる場合はもう一工夫が必要になる。関数は JSON としては無効だからだ。セーブデータなどを入れたりするのに便利。
// 取得 var saveData = JSON.parse(localStorage.getItem(saveDataTitle)); //保存 localStorage.setItem(key, JSON.stringify(saveData));
Cookie はドメインごとに 4kb までしか保存できないが WEB Storage はドメインごとに 5MB (ブラウザによってはもっと多い) まで保存できる。多い。
別ドメインで保存したものを参照できないのは変わらない。
有効期限がウィンドウを閉じるまでな WEB Storage。使い道はよくわからない。
Shunshun94/Sweet を公開しました。実際に触るには http://shunshun94.web.fc2.com/sweet/ にアクセスしてください。
TRPG の GM 向けツール群。とりあえずはソードワールド2.0にターゲットを絞って開発する予定です。