JavaScript 将类数组转换为真正的数组
// 摘抄自Promise源代码
var iterableToArray = function (iterable) {
if (typeof Array.from === "function") {
// ES2015+, iterables exist
iterableToArray = Array.from;
return Array.from(iterable);
}
// ES5, only arrays and array-likes exist
iterableToArray = function (x) {
return Array.prototype.slice.call(x);
};
return Array.prototype.slice.call(iterable);
};
此问题,来自于笔者的一次面试,今天总结一下。
解释
首先,根据环境决定 iterableToArray 函数最终是使用 ES6 的新方法 Array.from 还是使用 ES5 的 slice 方法,然后无论怎样,都返回最终的转换结果真正的数组。
笔者自己思考的方法
ES6+环境下,采用 […iterable] 的方法直接转换;通用方法,采用 for 循环进行转换。
读者方法
欢迎各路大佬在讨论区给出你们的新方法~