Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////////////////////////
- //
- //@title よく使うけどよく忘れる配列の使い方
- //@private
- //
- //作った人: Awn(@Awn_tw)
- //
- //改定履歴
- //-201xxxxx(ver 1.0.0): 新規作成
- //
- //諸注意
- //-ご利用は自己責任でお願いします。
- //-スクリプトは予告なく修正または廃止されることがあります。
- //-コンソールでしか動かない、と思います。
- //-悪用は厳禁です。
- //-改造改良改悪はご自由にどうぞ。
- //
- //////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////
- //
- // 君 も 今 日 か ら 配 列 中 毒 者 に な ろ う !
- //
- //////////////////////////////////////////////////////////////////////////
- /*--------------------------------*/
- // 基本
- /*--------------------------------*/
- //文字列と数字
- 11 - 0;
- //結果は数字の11
- "11" - 0;
- //結果は数字の11
- 11 + "";
- //結果は文字列の"11"
- "11" + "";
- //結果は文字列の"11"
- /*--------------------------------*/
- // 配列の超基本
- /*--------------------------------*/
- //空の配列
- [];
- //素直に列挙する
- var data = ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ"];
- //文字列 => 配列
- var str = "あいうえおかきくけこ";
- var data = str.split("");//dataは["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ"]となる
- //数字 => 配列
- var num = 1234567890;
- var str = num + "";//strは"1234567890"となる
- var data = str.split("");//dataは["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]となる
- /*
- => しかしこれだと配列の要素は文字列となってしまう
- data = data.map(function(elm){return elm - 0;}); とすることによって、配列の要素を数字にすることができる
- */
- //配列 => 文字列
- var data = ["あ", "い", "う", "え", "お"];
- var str = data.join("");//strは"あいうえお"となる
- //要素へのアクセス
- var data = ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ"];
- data[0];//"あ"
- data[1];//"い"
- data[9];//"こ"
- data[10];//undefined
- data[100];//undefined
- var a = [];
- a[0];//undefined
- a[1];//undefined
- //配列の長さ
- //要素がある場合
- var data = ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ"];
- data.length;//10
- //要素がない(=空の配列の)場合
- var data = [];
- data.length;//0
- //配列とイコール(==と===)
- var a = ["あ", "い", "う", "え", "お"];
- var b = ["か", "き", "く", "け", "こ"];
- var c = ["あ", "い", "う", "え", "お"];
- var d = a;
- a == a;//true
- a == b;//false
- a == c;//false
- a == d;//true
- a === a;//true
- a === b;//false
- a === c;//false
- a === d;//true
- var a = [];
- var b = [];
- a == b;//false
- a === b;//false
- a == [];//false
- a === [];//false
- a == 0;//true
- a === 0;//false
- a == undefined;//false
- a === undefined;//false
- a == null;//false
- a === null;//false
- //=> 配列が空の配列かどうか調べるには・・・
- a.length == 0;//true
- a.length === 0;//true
- //lengthプロパティを用いる
- //配列のコピー
- var a = ["あ", "い", "う", "え", "お"];
- var b = a;
- b;//b = ["あ", "い", "う", "え", "お"];
- a[5] = "か";
- a;//["あ", "い", "う", "え", "お", "か"]
- b;//["あ", "い", "う", "え", "お", "か"]
- // a === b は true
- // b に代入されたのは, aの要素ではなく「aへの参照」であるため、aが変更されるとbの中身はaと同じになってしまう
- // これを回避する(すなわち、a === b が falseとなる)には・・・
- var a = ["あ", "い", "う", "え", "お"];
- var b = a.join("").split("");// b = ["あ", "い", "う", "え", "お"];
- a === b;//false
- a[5] = "か";
- a;//["あ", "い", "う", "え", "お", "か"]
- b;//["あ", "い", "う", "え", "お"]
- //当然、 a === b はfalse
- /*
- もちろん、mapを使い
- var a = ["あ", "い", "う", "え", "お"];
- var b = a.map(function(elm){return elm;});// b は ["あ", "い", "う", "え", "お"]
- a === b;//false
- とすることも可
- */
- //配列のコピーは参照をコピーするだけなので恩恵を受けることもあるが、
- //思わぬバグの温床となることもあるので要注意
- //値をコピーしたいのであれば、join("").split("")やmapなどで値を明示的にコピーしよう
- /*--------------------------------*/
- // 配列のpop(),shift(),push(),unshift()
- /*--------------------------------*/
- var a = [];
- //pushは末尾に追加
- a.push(4);//[4]
- a.push(5);//[4,5]
- a.push(6);//[4,5,6]
- //unshiftは先頭に追加
- a.unshift(3);//[3,4,5,6]
- a.unshift(2);//[2,3,4,5,6]
- a.unshift(1);//[1,2,3,4,5,6]
- //popは末尾から取り出し,取り出した要素は削除される
- a.pop();//戻り値は6, aは[1,2,3,4,5]
- a.pop();//戻り値は5, aは[1,2,3,4]
- a.pop();//戻り値は4, aは[1,2,3]
- //shiftは先頭から取り出し,取り出した要素は削除される
- a.shift();//戻り値は1, aは[2,3]
- a.shift();//戻り値は2, aは[3]
- a.shift();//戻り値は3, aは[]
- //空の配列から取り出すことはできないのでundefinedが返ってくる
- a.pop();//戻り値はundefined, aは[]
- a.shift();//戻り値はundefined, aは[]
- /*--------------------------------*/
- // 配列で使うと便利なメソッド
- /*--------------------------------*/
- var data = ["あ", "い", "う", "え", "お"];
- data.map(function(elm,ind,arr){return ind + ":" + elm;});
- // -> ["0:あ", "1:い", "2:う", "3:え", "4:お"]
- //配列の要素に関数を適用しその結果から成る配列を返す
- //elm => 配列の要素, ind => 添え字, arr => 元の配列
- var data = ["あ", "い", "う", "え", "お"];
- data.map(function(elm,ind,arr){return elm + "んこ";});
- // -> ["あんこ", "いんこ", "うんこ", "えんこ", "おんこ"]
- var data = ["あんぱん","いんちき","うよきょくせつ", "えんそく","おらんだたいしかん"];
- data.filter(function(elm,ind,arr){return elm.length > 4;});
- // -> ["うよきょくせつ", "おらんだたいしかん"]
- //配列の要素に関数を適用しその結果がtrueである要素から成る配列を返す
- var data = ["りんご","ばなな","りんご","ばなな","ばなな","すいか","まつたけ"];
- data.filter(function(elm,ind,arr){return arr.indexOf(elm) === ind;});//配列の重複除去
- // -> ["りんご", "ばなな", "すいか", "まつたけ"]
- var data = ["りんご","ばなな","りんご","ばなな","ばなな","すいか","まつたけ","すいか"];
- ( data.filter(function(elm,ind,arr){return arr.indexOf(elm) === ind;}) )
- .map(function(elm1){ return (data).filter(function(elm2){return elm1 === elm2;});});
- // -> [[りんご,りんご],[ばなな,ばなな,ばなな],[すいか],[まつたけ]]
- //要素のグルーピング
- var data = ["りんご","ばなな","りんご","ばなな","ばなな","すいか","まつたけ","すいか"];
- data.some(function(elm,ind,arr){return elm === "まつたけ";});
- // -> true
- //関数を満たす配列の要素が一つでもあればtrueを返す
- var data = ["りんご","ばなな","りんご","ばなな","ばなな","すいか","まつたけ","すいか"];
- data.every(function(elm,ind,arr){return elm === "まつたけ";});
- // -> false
- //全ての配列の要素が関数を満たせばtrueを返す
- //TODO:
- /* ここにdata.reduce(function(elm){return;});の説明を書く*/
- /* see https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array */
- //極端な例
- var myfunc = [
- function(x){return Math.sin(x);},
- function(x){return Math.cos(x);},
- function(x){return Math.tan(x)}
- ];
- var f = function(t){return myfunc.map(function(elm){return elm(t);});}
- f(Math.PI/6);//[0.49999999999999994, 0.8660254037844387, 0.5773502691896257]
- //どんな要素がどれくらい入っているか調べるアレ
- var data = ["りんご","ばなな","りんご","ばなな","ばなな","すいか","まつたけ","すいか"];
- function doArraySort(data){
- var data_key = data.filter(function(elm,ind,arr){return arr.indexOf(elm) === ind;});
- var data_value = ( data_key.map(function(elm1){return data.filter(function(elm2){return elm1 === elm2})}) ).map(function(elm){return elm.length; });
- var output = {};
- for(var ix = 0; ix < data_key.length; ix++){
- output[ data_key[ix] ] = data_value[ix];
- }
- return output;
- }
- doArraySort(data)//-> Object {りんご: 2, ばなな: 3, すいか: 2, まつたけ: 1}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement