es6 Array.form將類數組或者對象轉化為數組


Array.from()方法就是將一個[類數組對象][或者可遍歷對象]轉換成一個[真正的數組]

那么什么是類數組對象呢?所謂類數組對象,最基本的要求就是具有length屬性的對象。

       let arrayLike = {
            0: 'll',
            1: '60',
            2: '男',
            3: ['重慶', '四川'],
            'length': 4
        }
        let arr = Array.from(arrayLike);
        console.log(arr);

===================
如果沒有length:4,那么就會轉成一個空數組

 let arrayLike = {
            0: 'll',
            1: '60',
            2: '男',
            3: ['重慶', '四川'],
        }
        let arr = Array.from(arrayLike);
        console.log(arr);  返回[]

對象的屬性名必須為數值型或字符串型

 let arrayLike = {
            bname: 'll',
            asa: '60',
            bb: '男',
            cc: ['重慶', '四川'],
            length: 4
        }
        let arr = Array.from(arrayLike);
        console.log(arr);    [undefined, undefined, undefined, undefined]
看下面這個例子
 let objarrLiske = {
            2: "張三",
            length: 3
}
let arr = Array.from(objarrLiske);
console.log(arr); //[undefined,undefined,'張三'];
//  上面顯示類數組的長度是3,但是只有一個值。
//  則內容沒有那么長,使用undefined來填充

===============
 let arr2 = {
      2: "張三",
      length: 3
  };

  let arr3 = Array.prototype.slice.call(arr2);
  console.log(arr3);        console.log(arr3);//[ 2:"張三"]
  不同的瀏覽器顯示的內容還不一樣
  
我忘記call這個改變this指向的方法了

另外

由此可見,要將一個類數組對象轉換為一個真正的數組,必須具備以下條件:

  1、該類數組對象必須具有length屬性,用於指定數組的長度。如果沒有length屬性,那么轉換后的數組是一個空數組。上面已經驗證了  ok

  2、該類數組對象的屬性名必須為數值型或字符串型

   3、 如果內容小於(《 )length;則使用underfined進行填充

如何使用其他的方法將一個對象轉為數組 for in
for in 循環空對象或者數組 是不會報錯的哈

     // 將對象變為數組
        let arrayLike = {
            bname: 'll',
            asa: '60',
            bb: '男'
        }
        let newarr = [];
        for (let i in arrayLike) {
            newarr.push(arrayLike[i])
        }
        console.log(newarr); ["ll", "60", "男"]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM