Javascript 展平/展开对象:我是否在正确的轨道上?
我想展平多层对象,反之亦然。 例如:Javascript 展平/展开对象:我是否在正确的轨道上?,javascript,forms,object,Javascript,Forms,Object,我想展平多层对象,反之亦然。 例如: { option1:value1, option2:value2, option3:{ key1:value31, key2:value32 }, option4:[value40,value41,value42] } 相当于: { option1:value1, option2:value2, "option3.key1":value31, "opt
{
option1:value1,
option2:value2,
option3:{
key1:value31,
key2:value32
},
option4:[value40,value41,value42]
}
相当于:
{
option1:value1,
option2:value2,
"option3.key1":value31,
"option3.key2":value32,
"option4.0":value40,
"option4.1":value41,
"option4.2":value42
}
对于小对象,展开表达式的目的是方便表单中的数据收集和使用默认选项合并。例如,我可以有如下表单元素:
<input name="option4.0" value="value40"/>
这是一种标准方法,还是有更好的方法?是否有库已经这样做了?该格式({option4.2:value42})将不起作用(因为键中的.in将被解析为点运算符)。相反,您需要引用密钥:
{ 'option4.2': value42 }
然而,这是非常不标准的。通常不需要展平对象-如果要将此类对象提交到服务器,可以使用JSON对其进行序列化,而无需展平:
var stringForServer = JSON.stringify(normalObject);
如果您正在寻找一个库来操作对象和数组等,下划线可能是您最好的选择:
干杯 我尝试了我的想法,它很好,但有一些局限性 最明显的是一个键不能包含一个点(使用这种技术,点是分隔符),键不能是数字(或者算法将其解释为数组索引)
另一个问题是,如果一个值是空对象或数组(例如option4:[]),它将不起作用。如果您使用PHP,并且您使用
,那么在服务器端,您将获得$\u POST['option4'][0]
@Kolink我完全在客户端工作,没有服务器交互.thx作为回复。我关心的一个问题是从表单中收集数据,并使其成为结构化对象或数组。一旦我得到了对象或数组,我就没事了。我还更正了问题,引用了键,谢谢!