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

如何创建带键的二维数组并通过push()等方法添加值

如何创建嵌套结构的对象并添加属性

嘿,我发现你想要构建的是一个嵌套键值对的对象,但之前误用了数组和push()方法——这就是结果不符合预期的核心原因!你目标里的myObj是一个对象(用大括号{}定义),而不是数组(方括号[]),数组的push()是用来往列表里加元素的,和对象的属性添加逻辑完全不一样。

下面给你几种正确实现目标结构的方式:

1. 直接初始化完整对象

如果一开始就知道所有属性和值,直接写出来最直观:

var myObj = {
  PlannedStartDate: { value: '123', mandatory: 'yes' },
  PlannedEndDate: { value: '456', mandatory: 'no' },
  Days: { value: '123', mandatory: 'yes' }
};

2. 动态逐步添加属性

如果需要分步骤添加(比如根据条件动态生成),先创建空对象,再逐个添加属性:

var myObj = {};

// 两种添加属性的方式,选哪种都行
// 方式1:点语法(适合固定的键名)
myObj.PlannedStartDate = { value: '123', mandatory: 'yes' };

// 方式2:方括号语法(适合键名带特殊字符,或者键名是变量的情况)
myObj['PlannedEndDate'] = { value: '456', mandatory: 'no' };

// 继续添加第三个属性
myObj.Days = { value: '123', mandatory: 'yes' };

3. 批量添加(类似数组push的批量场景)

如果有一组需要批量处理的属性数据,可以先把它们存在数组里,再循环添加到对象中:

var myObj = {};

// 准备好要添加的属性集合
var propertyList = [
  { key: 'PlannedStartDate', value: '123', mandatory: 'yes' },
  { key: 'PlannedEndDate', value: '456', mandatory: 'no' },
  { key: 'Days', value: '123', mandatory: 'yes' }
];

// 循环遍历,把每个属性添加到对象
propertyList.forEach(item => {
  myObj[item.key] = {
    value: item.value,
    mandatory: item.mandatory
  };
});

为什么你之前的代码不对?

你之前定义的post_outage_array是数组,用push()会把{"PlannedStartDate" : '123'}作为数组的一个元素插入,最终得到的是:

[{"PlannedStartDate": "123"}]

这显然和你想要的嵌套对象结构完全不同啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:40:42