将dom数组转成数组
var r = var s = Array.prototype.slice.call(document.querySelectorAll("div"));
将字符串转化成数组
var r = var s = Array.prototype.slice.call("hello");
//result:["h", "e", "l", "l", "o"]
将带有length且属性名是数字的对象转化成数组
var s = {
0:'面包',
1:'b',
3:'沙拉' ,
length:4
}
var s = Array.prototype.slice.call(s);
//result:["面包", "b", empty × 1, "沙拉"]
var s = {
0:'面包',
1:'b',
"nian":'沙拉' ,
length:4
}
var s = Array.prototype.slice.call(s);
//["面包", "b", empty × 2]
1.该方法是Es6中新增方法
2.该方法的定义为Array.from(arrayLike , function fn(){} , thisArg]),注意其中fn是可以在转化过程中对数据进行处理
3.该方法的使用场景
将字符串转化成数组
var r = Array.from("hello")
//result:["h", "e", "l", "l", "o"]
将带有length且属性名是数字的对象转化成数组
var s = {
0:'面包',
1:'b',
3:'沙拉' ,
length:4
}
var r = Array.from(s)
//result:["面包", "b", undefined, "沙拉"]
将Map对象转成数组
var s = new Map()
s.set("1","早餐")
s.set("2","午餐")
s.set("3","晚餐")
var r = Array.from(s)
// result: [["1", "早餐"],["2", "午餐"],["3", "晚餐"]]
将Set对象转化成数组
var s = new Set()
s.add("1").add("2").add("3").add({"0","a"})
var r = Array.from(s)
//result:["1", "2", "3", {…}]
Array.property.slice()和Array.from()的主要区别在后者可以转化Map,Set这类Es6中新增的方法