length
属性:表示元素的数量。类数组对象常见于以下场景:
arguments
对象document.querySelectorAll
)类数组对象与数组的主要区别在于,类数组对象不具备数组的方法,如 push
、pop
、forEach
等。为了使用数组方法,通常需要将类数组对象转换为真正的数组。
Array.from()
Array.from()
是 ES6 中引入的一个静态方法,可以将类数组对象或可迭代对象转换为数组。
示例:
function example() {
var args = arguments;
var argsArray = Array.from(args);
console.log(argsArray); // [1, 2, 3]
}
example(1, 2, 3);
Array.prototype.slice.call()
Array.prototype.slice
方法可以用于将类数组对象转换为数组。通过调用 slice
方法并传入类数组对象作为 this
值,可以创建一个新的数组。
示例:
function example() {
var args = arguments;
var argsArray = Array.prototype.slice.call(args);
console.log(argsArray); // [1, 2, 3]
}
example(1, 2, 3);
扩展运算符 ...
可以将类数组对象的元素展开到一个新数组中。这种方法简单且直观。
示例:
function example() {
var args = arguments;
var argsArray = [...args];
console.log(argsArray); // [1, 2, 3]
}
example(1, 2, 3);
for
循环可以使用 for
循环手动遍历类数组对象,将每个元素添加到新数组中。
示例:
function example() {
var args = arguments;
var argsArray = [];
for (var i = 0; i < args.length; i++) {
argsArray.push(args[i]);
}
console.log(argsArray); // [1, 2, 3]
}
example(1, 2, 3);
类数组对象虽然看起来类似数组,但不具备数组的方法。要将类数组对象转换为数组,可以使用 Array.from()
、Array.prototype.slice.call()
、扩展运算符或手动循环。这些方法各有优劣,Array.from()
和扩展运算符是较新的方式,更为简洁,而 Array.prototype.slice.call()
则具有更好的兼容性。