javascript - 展平/展开对象 : am I on the right tracks?

标签 javascript forms object

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

{
    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);

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

干杯!

关于javascript - 展平/展开对象 : am I on the right tracks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14613681/

相关文章:

javascript - 选择元素验证在 JavaScript 中不起作用

Javascript 返回 false 在 ie 中不起作用

forms - 将文件浏览器按钮添加到MS Access表单

forms - 具有多态 has_many 模型的嵌套属性

c++ - 需要帮助让类(class)相互交流

java - 返回数组总和的 toString 方法和递归方法中的错误

javascript - document.getElementById ('rockImg' ).src == "rock.png"似乎没有在 if() block 中执行

javascript - Mocha chai-http 响应总是返回 null

PHP - 登录后如何获取正确的名字和姓氏?

xml - 将 XML 转换为 C# 对象