Javascriptの配列、文字列、オブジェクト遍歴の方法と違い

2203 ワード

まず3つの数値を説明します.配列、文字列、オブジェクト
    var array = [4,5,6,7];
    var string = 'gaoliang';
    var object = {
        name:'gl',
        age:20,
        sayName:function() {
            console.log(this.name);
        }
    };
for in
行列
    for(let i in array) {
        console.log(i); //  0 1 2 3
    }
文字列
    for(let i in string) {
        console.log(i); //  0 1 2 3 4 5 6 7
    }
オブジェクト
    for(let i in object) {
        console.log(i); //  name age sayName
    }
まとめ:for inは配列、文字列を巡回するとき、iは各項目のインデックス値に対応し、それぞれのインデックス値シーケンスを返します.オブジェクトを巡回した場合、iはオブジェクトの属性に対応します.
for of
行列
    for(let v of array) {
        console.log(v); //  4 5 6 7
    }
文字列
    for(let v of string) {
        console.log(v); //  g a o l i a n g
    }
オブジェクト
     for(let v of object) {
        console.log(v);  //   :object is not iterable
     }
まとめ:for ofサイクルで、配列または文字列を巡回した場合、vは各項目の値に対応し、それぞれの値のシーケンスを返します.オブジェクトをfor ofで巡回できません.
keys()
行列
    for(let i of array.keys()) {
        console.log(i); //  0 1 2 3
    }
オブジェクト
console.log(Object.keys(object));   //  ['name','age','sayName'];
まとめ:
  • 配列のkeys()方法は、各インデックス値からなるシーケンス
  • を返します.
  • オブジェクトのkeys()メソッドは、属性からなる配列
  • を返します.
  • 文字列はkeys()の方法がありません.
    values()
    行列
        for(let i of array.values()) {
            console.log(i); //  4 5 6 7
        }
    
    オブジェクト
    console.log(Object.values(object)); //  ['gl',20,f]
    
    まとめ:
  • 配列のvalues()方法は、各値からなるシーケンス
  • を返します.
  • オブジェクトのvalues()メソッドは、属性値からなる行列
  • を返します.
  • 文字列はvalues()の方法がありません.
    entries()
    行列
        for(let [index,value] of array.entries()) {
            console.log(index,value);   // 0 4    1 5     2 6    3 7
        }
    
    オブジェクト
        console.log(Object.entries(object));    //  ['name','gl']   ['age',20]  ['sayName',f]
    
    まとめ:
  • 配列のentries()メソッドは、各インデックス値と配列値からなるキーペア
  • を返します.
  • オブジェクトのentries()メソッドは、各属性と属性値からなる行列
  • を返します.