以前 jQuery の繰り返し処理について書きましたが(【jQuery】複数の要素に対して繰り返し処理をする(each・for) - TASK NOTES)、もうひとつ map というメソッドがあります。これは単純な繰り返し処理用ではないので前回のエントリからは外しましたが、使い慣れると非常に便利なのでまとめておきたいと思います。 今回使うサンプルのHTMLはこんな感じです。 <div class="hoge">ほげ1</div> <div class="hoge">ほげ2</div> <div class="hoge">ほげ3</div> ... jQueryのmapとは map とはマッチした要素数分を繰り返して指定した関数を実行し、その結果をまとめた新しいjQueryオブジェクトを返してくれます。簡単に言うと配列から別の配列を作るという事です。 .map( )メソッド var arr
forEach() メソッドは反復処理メソッドです。指定された関数 callbackFn を配列に含まれる各要素に対して一度ずつ、昇順で呼び出します。 map() と異なり、 forEach() は常に undefined を返し、連鎖させることはできません。典型的な使用する用途は、チェーンの終わりで副次効果を実行することです。 callbackFn は値が割り当てられている配列インデックスに対してのみ呼び出されます。疎配列で空のスロットに対しては呼び出されません。 forEach() メソッドは呼び出し元の配列を変更しませんが、 callbackFn に指定された関数は変更することがあります。ただし、配列の長さは callbackFn を最初に呼び出す前に保存されることに注意してください。したがって、 callbackFn は forEach() の呼び出しを始めたときの配列の長さを超え
libgit2の内部ではハッシュテーブルが使われていたりしますが、C言語標準ライブラリにはハッシュテーブルはありません。ここで公開されている外部のライブラリkhash.hをラップして作られています。コードリーディングメモです。 khashとは何か MITライセンスですが、著者はプロフィールを隠しています。 このブログはanonymousなブログだ ... 俺は完璧主義者だ。もし、読者がこのブログを書いている私を知っているなら、 私は出来る限りすべてを完璧にし続けたいと思うだろう。 それは私を神経質にして、何を書くにしても疲れ果ててしまうだろう。 もし読者が私が誰かを知らないのであれば、自分を解放することができて、 心が赴くままに書き続けられるだろう。 (意訳) こういう厨二病な感じ、嫌いじゃないです。とはいえ、ちょっと古いですがここのエントリーに書かれているベンチマークの結果を見ると、トッ
PHPでは配列を受け取らず、中身を展開した状態しか受け取らない関数が存在します。pack関数はバイナリを弄るときに使用する関数ですが、例えば1バイトの値が1024個入った配列をバイナリにしたいとき、 pack("C*", $array); と書いても正しく動作しません。 正しくは pack("C*", ...$array); このように書き、引数の配列をアンパッキングします。 この書き方を行うと、 $array=[0,1,2,3,続く]; のとき pack("C*", 0, 1, 2, 3, 続く); を実行したときと同じ挙動となります。 このように配列を展開したいという場合は意外と多いので、ぜひ覚えておきましょう。 ご覧いただきありがとうございました。
中央値の中央値(ちゅうおうちのちゅうおうち、英: median of medians)とは、クイックセレクトに基づく選択アルゴリズムのことである。k番目に大きい要素を選択するための最悪計算時間が線形になることが特徴である。 このアルゴリズムでは、最初におおよその中央値を線形時間で探索し、その値をクイックセレクトでのピボット値とする。つまり、(漸近的な)おおよその中央値選択アルゴリズムを使って、(漸近的な)一般値選択アルゴリズムを構築したものである。 このアルゴリズムは、マヌエル・ブラムら[1]によって開発されたもので、著者の名字の頭文字を取ってBFPRTとも呼ばれる。この原著では中央値の中央値アルゴリズムをPICKと呼び、クイックセレクトをFINDと呼んでいた。 概要[編集] クイックセレクトは分割統治法であり、計算の各段階で、残っている探索対象の要素が個の場合にの計算時間を必要とする。そ
// 以下の呼び出しはすべて true を返します Array.isArray([]); Array.isArray([1]); Array.isArray(new Array()); Array.isArray(new Array("a", "b", "c", "d")); Array.isArray(new Array(3)); // あまり知られていないものの Array.prototype は配列です Array.isArray(Array.prototype); // 以下の呼び出しはすべて false を返します Array.isArray(); Array.isArray({}); Array.isArray(null); Array.isArray(undefined); Array.isArray(17); Array.isArray("Array"); Array.is
この記事は JavaScript2 Advent Calendar 2018 の1日目の記事です。 こんばんは。@diescake です。 今年は、JavaScript 経験の浅い新人さんや外注さんをリードする立場として、 とにかく幅広いメンバーのコードレビューをする機会に恵まれたのですが、 事ある毎に Array.prototype.forEach を利用する人が多かったため、初心者向けに要点を整理してみました。 以下 ES2015 以降のバージョンをサポートするブラウザ、あるいは polyfill を利用していることを前提としています。 結論 配列に対して何らかの操作を行う際は、 filter, find, map, reduce などのメソッドを利用できないか検討し、 いずれのメソッドでも実現ができない場合の最終手段として forEach を選択しましょう。 下記に、いくつかのサンプ
概要 変数を連想配列に入れるのが大好きで、使用頻度がめちゃくちゃ高い割に毎回忘れる連想配列のforループ操作。 連想配列のkey-valueを順番に取得する let hash = { key0: "value0", key1: "value1" }; for (let key in hash) { alert('key:' + key + ' value:' + hash[key]); } 追記: コメント欄より このエントリは上記の短い記述に対し、本当にやりたかったことを汲んだ知見が寄せられ大変勉強になりました。このエントリを参照するエントリもじわじわ増えており、(実である)コメント欄がスルーされてしまうのは勿体ないのでコメント欄の内容を再掲?します(2019.06.20) このエントリに連想配列の値参照・操作の方法を求めて辿り着いた方は是非コメント欄に目を通してください。 Consol
Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su
標準組み込みオブジェクトArrayコンストラクターArray() constructorプロパティArray[@@species]Array.prototype[@@unscopables]Array: lengthメソッドArray.prototype[@@iterator]()Array.prototype.at()Array.prototype.concat()Array.prototype.copyWithin()Array.prototype.entries()Array.prototype.every()Array.prototype.fill()Array.prototype.filter()Array.prototype.find()Array.prototype.findIndex()Array.prototype.findLast()Array.prototype.fi
Mapオブジェクトと連想配列を変換したくなったのですが、一発で変換できないみたいなので自分で書いてみました。 調べながら書いていろいろ勉強になったのでメモしておきます。 できたもの const mapToObject = map => Array.from(map.entries()) .map(([k,v]) => ({[k]:v})) .reduce((l,r) => Object.assign(l, r), {}) const objectToMap = object => Object.entries(object).reduce((l,[k,v])=>l.set(k,v), new Map()) const mapToObject = map => [...map].reduce((l,[k,v]) => Object.assign(l, {[k]:v}), {}) const
PHPとPythonとRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 本稿では3言語の連想配列の従来実
Object.keys() は、object で直接発見された列挙可能なプロパティに対応する文字列を要素とする配列を返します。プロパティの順序は、オブジェクトのプロパティをループにより手動で取得した場合と同じです。 // 単純な配列 const arr = ["a", "b", "c"]; console.log(Object.keys(arr)); // console: ['0', '1', '2'] // オブジェクトのような配列 const obj = { 0: "a", 1: "b", 2: "c" }; console.log(Object.keys(obj)); // console: ['0', '1', '2'] // キーの順序がランダムなオブジェクトのような配列 const anObj = { 100: "a", 2: "b", 7: "c" }; console.l
bashのfor文のまとめです。 ネットで調べたところ、ケース別ですぐに使えそうなサンプルが並んでいるものがなかったので、このエントリーでまとめてみました。 認識違いがありましたどこかでつぶやいてください。 なお、サンプルでは変数のカーリーブレースやダブルクォーテーションは省略しています。適宜付与してください。 1.フォーマット bashのfor文のフォーマットは for 繰り返し条件 do # ... done となっています。 次のフォーマットでも書けます(以降、このフォーマットで解説)。 for 繰り返し条件; do # ... done 2.初期値・ループ条件・ループ時の処理で指定する 繰り返し条件の部分は一般的なfor文のお作法(初期値、ループ条件、ループ時の処理)が利用できます。 for ((初期値; ループ条件; ループ時の処理)); do # ... done サンプル m
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く