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

如何修改for循环以输出包含对象的数组形式结果?

解决CSV转对象数组的输出问题

你的核心问题是每次循环都在复用同一个dataObject对象,导致控制台打印的是这个对象不断被修改后的状态,而不是生成多个独立的对象存入数组。按照下面的方式修改代码就能得到你想要的数组格式:

import fs from 'fs'
import csvjson from 'csvjson'

const path = 'cyberBackgroundChecks/importer/assets/file.csv'

if (path && fs.existsSync(path)) {
    let file = fs.readFileSync(path);
    file = file.toString()
    const json = csvjson.toObject(file)

    // 1. 初始化一个空数组用来存储所有对象
    let dataArray = []

    // 先判断json是否有内容,避免空循环
    if (json.length > 0) {
        for (let i = 0; i < json.length; i++) {
            // 2. 每次循环创建一个新的对象,而不是复用同一个
            let currentItem = {
                index: i,
                name: json[i]['OWNER 1 FIRST NAME'] || json[i]['OWNER 1 LAST NAME'],
                streetAddress: json[i]['SITUS STREET ADDRESS'],
                city: json[i]['SITUS CITY'],
                state: json[i]['SITUS STATE']
            }
            // 3. 将新对象添加到数组中
            dataArray.push(currentItem)
        }
    }
    // 4. 循环结束后打印整个数组
    console.log(dataArray)
} else {
    console.log('The file does not exist');
}

关键修改点说明:

  • 把单个dataObject换成数组dataArray,用来收集所有生成的对象
  • 循环内部每次创建新的currentItem对象,保证每个元素都是独立的
  • 用||替代三元运算符,逻辑更简洁(效果和原代码一致,都是优先取名字,没有则取姓氏)
  • 把json.length > 0的判断移到循环外,避免每次循环都重复判断

这样运行后,控制台就会输出你期望的包含多个对象的数组格式了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:50:39