如何创建带键的二维数组并通过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
相关产品推荐
相关产品推荐

