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

如何基于循环中的position变量构建结构化Accounts数组对象?

问题描述

我在创建包含若干字段的对象、将其推入数组并生成结构清晰的对象数组时遇到了困难。现有代码如下:

// function to extract integer from key field...
function pad3(position) {
    return parseInt((position < 10 ? position.charAt(1) : position))
}

for (let field of formData) {
        key = field[0]
        val = field[1]
        position = pad3(key.substring(0,2)) // 00- becomes 0, 01- becomes 1 etc...

        let obj = []
        obj = {[key.substring(3,key.length)]: val}
        arr.push(obj)   
}

循环内打印key和val的结果如下:

console.log(key) // 00-account_a
console.log(val) // 111
console.log(key) // 00-account_b
console.log(val) // 222

console.log(key) // 01-account_a
console.log(val) // 333
console.log(key) // 01-account_b
console.log(val) // 444

console.log(key) // 02-account_a
console.log(val) // 555
console.log(key) // 02-account_b
console.log(val) // 666

以此类推……
我希望基于position变量生成结构清晰的数组对象,格式如下:

Accounts [
[0] {   // <-- [0] based on "position" variable ...
    account_a: 111,
    account_b:222
},
[1] { 
    account_a: 333,
    account_b:444
},
[2] { 
    account_a: 555,
    account_b:666
},
]
解决方案

你当前的代码每次循环都会创建一个新对象并直接推入数组,导致数组里是多个独立的单键对象,而不是按position分组的多键对象。修改思路是根据position值复用同一个对象,具体代码如下:

function pad3(position) {
    return parseInt((position < 10 ? position.charAt(1) : position))
}

// 初始化空数组用于存储最终结果
const Accounts = [];

for (let field of formData) {
    const key = field[0];
    const val = field[1];
    const position = pad3(key.substring(0,2));
    const fieldName = key.substring(3); // 提取account_a、account_b这类字段名

    // 如果当前position对应的对象还不存在,先创建一个空对象
    if (!Accounts[position]) {
        Accounts[position] = {};
    }

    // 将键值对添加到对应position的对象中
    Accounts[position][fieldName] = val;
}

关键修改点:

  • 初始化Accounts数组,不再每次循环创建新对象push
  • 循环时先检查Accounts[position]是否存在,不存在则初始化空对象
  • 直接将当前键值对赋值给对应position的对象,实现同一分组下的字段合并

这样处理后,Accounts数组就会按照position生成你需要的结构,每个索引位置对应一个包含该组所有字段的对象。

内容的提问来源于stack exchange,提问作者Cult of Tranquility

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:52:50