以下是详细讲解“JS从非数组对象转数组的方法小结”的完整攻略。
问题背景
在 JavaScript 开发中,我们常常需要将一个非数组对象转成数组,以便进行遍历、排序等操作。此时,我们可以使用多种方法将非数组对象转成数组。
方法一:Array.from()
ES6 提供了 Array.from() 方法,可以将类数组对象或可遍历对象转成真正的数组。该方法的语法格式如下:
Array.from(arrayLike[, mapFn[, thisArg]])
其中,arrayLike 表示要转换的类数组对象或可遍历对象;mapFn 表示可选参数,是一个回调函数,用于对每个元素进行处理;thisArg 表示可选参数,是执行 mapFn 时 this 指向的对象。
例如,我们要将一个类数组对象转成数组,可以使用 Array.from() 方法:
const obj = {
0: "a",
1: "b",
2: "c",
length: 3
};
const arr = Array.from(obj); // ["a", "b", "c"]
在上面的示例中,我们将一个对象 obj 类比成一个数组,该对象有三个属性,分别是 0、1、2,以及一个 length 属性,表示数组的长度。然后我们使用 Array.from() 方法将该对象转成数组 arr,返回结果为 ["a", "b", "c"]。
方法二:Array.prototype.slice.call()
我们还可以使用 Array.prototype.slice.call() 方法将一个类数组对象转成真正的数组。该方法的语法格式如下:
Array.prototype.slice.call(arrayLike[, begin[, end]])
其中,arrayLike 表示要转换的类数组对象;begin 表示从哪里开始抽取,可选参数,默认值为 0;end 表示从哪里结束抽取,可选参数,默认值为 arrayLike.length。
例如,我们要将一个类数组对象转成数组,可以使用 Array.prototype.slice.call() 方法:
const obj = {
0: "a",
1: "b",
2: "c",
length: 3
};
const arr = Array.prototype.slice.call(obj); // ["a", "b", "c"]
在上面的示例中,我们将一个对象 obj 类比成一个数组,该对象有三个属性,分别是 0、1、2,以及一个 length 属性,表示数组的长度。然后我们使用 Array.prototype.slice.call() 方法将该对象转成数组 arr,返回结果为 ["a", "b", "c"]。
总结
以上就是两种将非数组对象转成真正数组的方法,使用时可以根据实际需要选择合适的方法。
上述两种方法的执行效率没有太大差异,但推荐使用 Array.from() 方法,因为该方法更为简洁明了。在兼容性方面,Array.prototype.slice.call() 方法的兼容性更好些,而 Array.from() 方法需要考虑兼容性问题。
希望这篇文章能对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS从非数组对象转数组的方法小结 - Python技术站