javascript

16進数文字列を数字に変換

16進数文字列を数字に変換'ffea34'.match(/.{2}/g).map(x=>'0x'+x|0)[255, 234, 52]

Array Repeatみたいに同じ値を指定回数追加するメソッドはないみたい

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill [].fill.call({ length: 3 }, '繰り返したい値'); でできるが正直微妙

capitalize 一文字目を大文字にする

String.prototype.capitalize = function(){ return this.charAt(0).toUpperCase() + this.slice(1); } https://firegoby.jp/archives/4473

16進数のカラーコード文字列を1ライナーでrgbの配列に変換する

"#8f5c44".slice(1).match(/.{1,2}/g).map(x=>parseInt(x,16))

Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: visibleundefined

Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: visibleundefinedやたら長いスタックトレースが出るが、 未サポートの疑似要素が指定されている、、、 要はjqueryのselectorが間違っている

ES6時代のスマフォ判定

if(['iPhone','iPad','Android'].some( x => navigator.userAgent.includes(x) ){ . . . }

javascriptでenum

javascriptにenumはないのでObjectで代用する。 ただし、Objectはreadonlyでない為、Object.freezeしてreadonlyにして使う。 What is the preferred syntax for defining enums in JavaScript? - Stack Overflow

for in breakするには

someを使う方法があるらしい。 someというメソッドの使い方からはプログラムの意図が分かりにくいというのはもっともですが、個人開発だったら別にありな気がする。 場合によっては、プログラムを短く簡潔に書ける。 var result = null; var arr = ['up','do…

javascript booleanへ変換

// !を使う !!1; // true !!0; // false !!'zawa'; // true !!''; // false !!null; // false !!undefined; // false 型変換のいろいろ - Qiita

javascriptのsortで並び替えない。

何を言っているのかよく分からないかもしれませんが、 ある共通の配列処理の中で、必ずしもソートが必要ない場合、デフォルト値としてソートしない無名関数を設定したい。 ソート条件を省略すると、デフォルトは文字列比較でソートされてしまうので Array.so…

chromeのjavascript コンソールでオブジェクトの中身をコピペできるように出力する

chromeのjavascript コンソールでobjectの中身を表示するときに console.dir(object); or console.log(object); or object; とするといずれも階層構造で表示してくれるが、コピペできない。 console.log(JSON.stringify(object); JSONに変換するとコピペでき…

javascriptでbashのfor in

bashのfor inと同じ構文がjavascriptにもあるが、挙動が全く異なるので注意bashのfor inと同じ動作で行いたい場合 今はfor of構文がある。ちなみにjavascriptのfor inは、いろいろな問題を持っていて、ほとんど使い道がない。 for...of - JavaScript | MDN f…

javascript 無名関数内でsetTimeoutなどで自分自身を呼び出すには....。

例えば、SPAなどrequire.jsで非同期にjqueryが呼ばれる場合などで、jqueryの読み込みが完了するまで待つ場合。 jqueryが存在しない場合に1秒後にもう一度自分自身を呼び出したい場合arguments.calleeを使う。但し、arguments.calleeは非推奨。そういう用途で…

javascript ES6時代の文字列比較

いつの間にか、startsWithやendsWithが追加されている。 正規表現で String.match(/^比較文字列/) String.match(/比較文字列$/) でもいいけど、気持ち的に処理が重くない方がいいかな。最近のchromeとかでは部分一致のincludesも追加されている。 chrome拡張…

文字列の部分一致いろいろ

C#とかでおなじみのstartsWith endWithが使える環境では使えるのでこいつを使うといい感じあとは str.matchの正規表現が定番ですね。 部分一致について、正規表現を使うのはイマイチだし、indexOfは-1と比較させるのが、なんか嫌だしと思っていたら、こんな…

jqueryで$.ajaxの非同期処理を書く

$.ajaxの単体の記事はわりと良くみかけるけど、多段の場合のサンプルがなかなか見つからなかったのでメモ。callback地獄を抜け出す為に、最近は、javascript自体にgeneretorやらpromiseやらが備わっているが、jqueryにはDeferredという仕組みが備わっており…

javascript pushでメソッドチェーン

できないので、concatを使う。 ぐぐってもすぐ出てこなかったのでメモ Arrayのconcatメソッドが何気に便利だった - あと味

javascript 配列の最後の値を取得するプロパティ

プロパティは動的に生成している。 try { Object.defineProperty(Array.prototype, "last", { get: function(){ return this[this.length-1]; } }); }catch(e){ Array.prototype.__defineGetter__("last", function(){ return this[this.length-1]; }); } ja…

深い階層のオブジェクトが存在するかどうかチェックする。

色々、やり方はあるが、最終的には以下で落ち着いた。 function isset (fn) { var value; try { value = fn(); } catch (e) { value = undefined; } finally { return value !== undefined; } }; console.log( isset(() => a.b.c), isset(() => a.b.c.d.e.f)…

コールバック関数にthisを渡す

今なら、アロー関数を使えばもれなく、勝手に渡ります。var that = thisとか一旦変数に代入したり.bind(this)とかしていたのが懐かしいですね。 that(self)とか別の変数にthisを入れる奴 var self = this; something( function () { // callback stuff } ) …

javascript オブジェクトのマージ

merge(obj1,obj2); これだけだった for(var prop in obj2){ obj1[prop] = obj2[prop] } とかやってたよ。 そうなると、あんまりfor in文で使いどころないなぁ。 複雑なオブジェクトのマージとかに使うか javascript オブジェクトのマージあれこれ - Code Life

javascriptでfunction()を省略して書く 〜 アロー関数 〜

function って書くの冗長だなと思っていたら、いつの間にか実装されていた。 chrome拡張の開発だったら、chromeが常に最新版に更新されるし、chrome以外のことを 考える必要ないので、使ってもいいんじゃね。chrome拡張の開発は、最新の技術を心置きなく盛り…

複数のイベントをまとめて処理したい時

formでinputのchangeやclickイベントだらけになった時に中級者に上がる為の一手。 実践、jQuery - .on()と.off()を使いこなす 1 | CodeGrid

サイトに埋め込んだjavascriptからchrome拡張のoptionページを開く

例として、backgroudからコンテンツメニューをサイト側に送って サイト側のコンテンツメニューから、chrome拡張のoptionページを開きたい場合サイト側でaタグでchrome拡張のoptionページ、chrome-extention://gesdfsdfer/option.htmlを指定しても、セキュリ…

css position:fixedで縦横中央に要素を配置する。

スマートフォン向けのWEBアプリを作るときにposition fixdを使って、要素を中央に表示したい。 昔からcssで縦中央に要素を配置をするのは大変だったけど、 position fixdを使うと途端に難しくなる。 position: fixed; top: 50%; left: 50%; transform: trans…

javascriptのswitch文で正規表現

ぐぐると沢山でてくるけど、 Javascriptのswitch文で正規表現を使う - Qiita 俺が求めているのはこれじゃない。 正規表現onlyなcaseならこれでいいが url='http://example.com/info.php'; with(url.compare){switch(url){ case 'http://example.com/': conso…

背面にある要素のマウスイベントを発火する

pngなどの透過な素材を前面に置いてちょっとこじゃれたデザインを使用したいという時によくある話。透過といえど、普通にそのままだとクリックを阻害する(現実で言うところのガラスがあるのと同じ) ので、昔はJavascriptで、クリックイベントを透過するよう…

javascriptで残り時間などのHH:mm:ss形式を秒数に直す

一発でやっているのが、ぐぐってもなかったので作った。HH:mm:ss ⇒ s '01:24:13'.split(':').reverse().reduce(function(prev,cur,idx,arr){ return prev + cur * Math.pow(60,idx); },0); 5053 アロー関数で書くとよりすっきり '01:24:13'.split(':').rever…

chrome拡張で新規タブを開かせるには

manifest.jsonのpermissionsにtabsを追加 manifest.json "permissions": [ "tabs" ] chrome.tabs.create({url: 開きたいURL }); とても簡単閉じるのは... chrome.tabs.remove(tabId); だが、開いたtabのtabIdってどうやって取得するのか javascript - Google…

javascriptで置換したい組のハッシュでreplaceする

phpのstr_replaceだと簡単 たぶん、こんなかんじ '逆','小' => '大' ]; $str = str_replace(array_keys($replaces),array_values($replaces),$str); javascriptだと途端に面倒になる。 まるで呪文のようだ var str = "小回転", map = {"回":"逆", "小":"大"…