简体   繁体   English

将键值对转换为数组javascript

[英]convert key value pairs into array javascript

I have an object that I receive from html form, and it has the following syntax: 我有一个从html表单接收的对象,它具有以下语法:

  'ingredients[0][name]': 'eggplant',
  'ingredients[0][mass]': '1',
  'ingredients[0][units]': 'pc',
  'ingredients[1][name]': 'cheese',
  'ingredients[1][mass]': '150',
  'ingredients[1][units]': 'gr',
  'ingredients[2][name]': 'cilantro',
  'ingredients[2][mass]': '100',
  'ingredients[2][units]': 'tt' ...

All that I need is to convert these key-value pairs into the one big object field. 我需要做的就是将这些键值对转换为一个大对象字段。 Such as

recipe = {
    ingredients: [
        {
            name: 'epplant',
            mass: '1',
            units: 'pc'
        },
        {
            name: 'cheese',
            mass: '150',
            units: 'gr'
        }, ...
    ]
}

How can I do this without JQuery or other JS-framework? 没有JQuery或其他JS框架,我该怎么做?

var form = {
  'ingredients[0][name]': 'eggplant',
  'ingredients[0][mass]': '1',
  'ingredients[0][units]': 'pc',
  'ingredients[1][name]': 'cheese',
  'ingredients[1][mass]': '150',
  'ingredients[1][units]': 'gr',
  'ingredients[2][name]': 'cilantro',
  'ingredients[2][mass]': '100',
  'ingredients[2][units]': 'tt'
}

var re = /([a-zA-Z][a-zA-Z_0-9]*)\[(\d+)\]\[([a-zA-Z][a-zA-Z0-9_]*)\]/

var result = {}

for (var key in form) {
    var match = key.match(re)
    if (!match) continue
    var arr = result[match[1]]
    if (!arr) arr = result[match[1]] = []
    var obj = arr[match[2]]
    if (!obj) obj = arr[match[2]] = {}
    obj[match[3]] = form[key]
}

console.log(result)

http://jsfiddle.net/r1gkog1b/ http://jsfiddle.net/r1gkog1b/

UPD: some explanation: UPD:一些解释:

I think, you should iterate throw your input form object keys and parse its with regexp. 我认为,您应该迭代抛出输入表单对象键并使用regexp对其进行解析。 In case of match you can construct desirable output structure 如果匹配,您可以构建理想的输出结构

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将键值对的JSON数组转换为Javascript中的JSON字符串数组 - convert JSON array of key value pairs to JSON Array of strings in Javascript 在JavaScript中将值数组转换为对象(键值)对数组 - Convert array of values to array of objects (key-value) pairs in JavaScript javascript ecma6将数组项转换为键值对的对象 - javascript ecma6 convert array items into an object of key value pairs 将 2 个元素数组的 JavaScript 数组转换为对象键值对 - Convert JavaScript array of 2 element arrays into object key value pairs 如何使用映射的键值对将数组转换为javascript中的对象? - How to convert an array into an object in javascript with mapped key-value pairs? 如何在JavaScript中将多个对象转换为键值对数组[] - How to convert multiple Objects to an Array [] of key-value pairs in javascript 如何在 JavaScript 中将嵌套对象数组转换为具有键值对的对象 - How to convert an array of nested objects to an object with key, value pairs in JavaScript 如何将 Object {} 转换为 JavaScript 中键值对的数组 [] - How to convert an Object {} to an Array [] of key-value pairs in JavaScript 使用javascript将“键值”对数组转换为对象 - Convert array of "key-value" pairs into object using javascript javascript - 具有键/值对的数组 - javascript - array with key/value pairs
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM