我想展平一个多级对象,反之亦然。
例如:

{
    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})无效(因为键中的。将被解析为点运算符)。相反,您需要引用密钥:

{ 'option4.2': value42 }


但是,这是非常不标准的。通常不需要展平对象-如果要将这样的对象提交给服务器,则可以使用JSON对其进行序列化而无需展平:

var stringForServer = JSON.stringify(normalObject);


如果您正在寻找一个用于操作对象和数组等的库,那么下划线可能是您最好的选择:


http://underscorejs.org/


干杯!

09-10 13:35