You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向数组添加类实例后遍历无效果,求可行遍历方法及问题解决

问题分析与解决方案

先看你代码里的核心问题:

  • 构造函数里的pushing函数只是定义了,从来没被执行过,所以数组a里没有任何元素,自然遍历也不会有输出。
  • 就算调用了pushing,里面的递归调用pushing()会触发无限循环,直接导致栈溢出。
  • 普通函数pushing里的this默认指向全局对象(浏览器里是window,Node环境是global),不是类实例,直接用会出错。

先修正代码,把实例正确推入数组

要把类实例推入数组,根本不需要写内部函数,两种简单方式:

方法1:构造函数内直接推入

let a = []
class PushArray {
  constructor(first, second) {
    this.first = first;
    this.second = second;
    // 这里的this就是当前类实例,直接推入数组
    a.push(this);
  }
}
const result = new PushArray('fdsfs', 'fdsfdsf');

方法2:实例化后手动推入(更灵活)

let a = []
class PushArray {
  constructor(first, second) {
    this.first = first;
    this.second = second;
  }
}
const result = new PushArray('fdsfs', 'fdsfdsf');
a.push(result); // 手动把实例加入数组

遍历类实例数组的常用方法

数组里有实例后,下面几种方法都能正常遍历:

1. 普通for循环

for (let i = 0; i < a.length; i++) {
  console.log(a[i].first, a[i].second);
}

2. forEach遍历

a.forEach(instance => {
  console.log(instance.first, instance.second);
});

3. for...of循环(ES6+)

for (const instance of a) {
  console.log(instance.first, instance.second);
}

4. map遍历(适合转换实例数据)

const instanceInfo = a.map(instance => `${instance.first} - ${instance.second}`);
console.log(instanceInfo);

运行修正后的代码,就能正常输出实例的属性内容了。

内容的提问来源于stack exchange,提问作者Osama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 07:05:20