モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

オブジェクトと配列 (JavaScript)

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

公開日公開日
2013/07/29
最終更新最終更新
2021/10/07
記事区分記事区分
一般公開

目次

    運用系Sier

    0
    ステッカーを贈るとは?

    オブジェクト

    JavaScriptにおけるオブジェクトは、クラスのインスタンスとしての性格と、Perlなどの連想配列としての性格の二つを兼ね備えています。

    クラスのインスタンスとしてのオブジェクト

    sample.js

    var date = new Date();
    console.log(date.toString());
    

    実行例

    $ node sample.js 
    Sun Jul 28 2013 18:19:24 GMT+0900 (JST)
    

    連想配列としてのオブジェクト

    sample.js

    var hash = {x1:-1, x2:-2, x3:-3};
    for(key in hash) console.log(hash[key]);
    

    実行例

    $ node sample.js 
    -1
    -2
    -3
    

    プロパティ (またはキー) の存在確認

    in演算子を用いる方法の他に、undefinedとの一致判定を行う方法があります。

    sample.js

    var obj = {x:null, y:2, z:3};
    
    console.log(('x' in obj).toString());
    console.log(obj.x !== undefined); //必要に応じて自動でtoStringが呼ばれるためメソッド呼び出しは省略可能
    
    delete obj.x; // プロパティの削除
    console.log('x' in obj);
    console.log(obj.x !== undefined);
    

    実行例

    $ node sample.js 
    true
    true
    false
    false
    

    ここで、undefinedとの比較による確認では、'!=='となっていることに注意してください。'!='ではありません。

    sample.js ('!='を使用した場合)

    var obj = {x:null, y:2, z:3};
    
    console.log(('x' in obj).toString());
    console.log(obj.x != undefined); //必要に応じて自動でtoStringが呼ばれるためメソッド呼び出しは省略可能
    
    delete obj.x; // プロパティの削除
    console.log('x' in obj);
    console.log(obj.x != undefined);
    

    実行例

    $ node sample.js 
    true
    false
    false
    false
    

    '!=='では型まで含めた一致判定が行われnullとの比較では一致しないため真が返りますが、'!='では真偽値のみの一致判定 (JSでは偽は「false,null,未定義,0,"",NaN」のみ)であるためnullとの比較でも一致してしまい偽が返ります。

    すべての親 Object

    JavaScript のすべてのオブジェクトは Object を継承しています。そのため Object が提供するメソッドは任意のオブジェクトで使用できます。例えば、オブジェクトを基本型に変換するメソッドが提供されています。

    var obj = new Object();
    
    // オブジェクトの文字列への変換
    console.log(obj.toString()); //=> [object Object]
    
    // オブジェクトの文字列でない基本型への変換 (文字列以外が返されることを期待して使用される)
    console.log(obj.valueOf()); //=> {}
    

    配列

    JavaScriptにおいて、配列はオブジェクトの一種です。そのため、以下の二つは同じ意味です。

    コンストラクタ

    var arr = new Array();
    

    配列リテラル

    var arr = [];
    

    配列オブジェクトには以下のようなプロパティやメソッドが用意されています。

    配列の長さ

    sample.js

    var arr = [1,2,3];
    console.log(arr.length);
    

    実行例

    $ node sample.js 
    3
    

    join (/split)

    sample.js

    var arr = [1,2,3];
    console.log(arr.join('-'));
    
    var str = arr.join();
    console.log(str); //既定値は','
    
    // 参考: String.split() メソッド
    console.log(str.split(','));
    

    実行例

    $ node sample.js 
    1-2-3
    1,2,3
    [ '1', '2', '3' ]
    

    reverse

    既存の配列を破壊的に変更します。

    sample.js

    var arr = [1,2,3];
    console.log(arr);
    arr.reverse();
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ 1, 2, 3 ]
    [ 3, 2, 1 ]
    

    sort

    既存の配列を破壊的に変更します。既定では文字列化後のアルファベット順になります。

    sample.js

    var arr = [2,1,3,11];
    console.log(arr);
    arr.sort();
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ 2, 1, 3, 11 ]
    [ 1, 11, 2, 3 ]
    

    比較関数を用意することで任意のソートが可能です。

    sample.js

    var arr = [2,1,3,11];
    console.log(arr);
    arr.sort(function(a,b){
        return a-b;
    });
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ 2, 1, 3, 11 ]
    [ 1, 2, 3, 11 ]
    

    sample.js

    var arr = [
        {name:'a', val:2},
        {name:'b', val:1},
        {name:'c', val:3},
        {name:'d', val:11}
    ];
    console.log(arr);
    
    arr.sort(function(a,b){
        return a.val-b.val;
    });
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ { name: 'a', val: 2 },
      { name: 'b', val: 1 },
      { name: 'c', val: 3 },
      { name: 'd', val: 11 } ]
    [ { name: 'b', val: 1 },
      { name: 'a', val: 2 },
      { name: 'c', val: 3 },
      { name: 'd', val: 11 } ]
    

    pop/push/shift/unshift

    pop/push

    sample.js

    var arr = [1,2,3];
    console.log(arr);
    
    arr.push(4);
    console.log(arr);
    
    console.log(arr.pop());
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ 1, 2, 3 ]
    [ 1, 2, 3, 4 ]
    4
    [ 1, 2, 3 ]
    

    shift/unshift

    sample.js

    var arr = [1,2,3];
    console.log(arr);
    
    arr.unshift(0);
    console.log(arr);
    
    console.log(arr.shift());
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ 1, 2, 3 ]
    [ 0, 1, 2, 3 ]
    0
    [ 1, 2, 3 ]
    

    concat

    配列に要素を結合したものを返します。非破壊的メソッドであることに注意してください。

    sample.js

    var arr = [1,2,3];
    arr = arr.concat(4,5);
    arr = arr.concat([6,7]);
    arr = arr.concat([8,['9-1','9-2']]);
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ 1, 2, 3, 4, 5, 6, 7, 8, [ '9-1', '9-2' ] ]
    

    slice

    いわゆるスライシングを行います。

    sample.js

    var arr = [1,2,3,4,5,6,7];
    
    console.log(arr.slice(3, arr.length-1)); //slice(fromIndex[, toIndex]) <= [注意]toIndexの要素は含まない
    console.log(arr.slice(3, -1)); //シンプルな書き方 (-1の挙動はPerlなどと同じ)
    
    console.log(arr.slice(3)); //toIndexを省略するとすべて取り出す
    

    実行例

    $ node sample.js 
    [ 4, 5, 6 ]
    [ 4, 5, 6 ]
    [ 4, 5, 6, 7 ]
    

    splice

    sliceとconcatを同時実行するようなメソッドです。第1引数はsliceと同様に開始要素のインデックスです。ただし、sliceと異なり第2引数は開始要素からの、対象要素の個数です。対象となる要素群をsliceのように返し、第3引数以降で指定された要素に置換します (指定がなければ削除に相当する処理になります)。

    sample.js

    var arr = [1,2,3,4,5,6,7];
    
    console.log(arr.splice(3, 3));
    console.log(arr);
    
    console.log(arr.splice(3, 0, ['4-1','4-2'], 'new5', 'new6'));
    console.log(arr);
    

    実行例

    $ node sample.js 
    [ 4, 5, 6 ]
    [ 1, 2, 3, 7 ]
    []
    [ 1, 2, 3, [ '4-1', '4-2' ], 'new5', 'new6', 7 ]
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    運用系Sier

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事