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", "男"]
