1.需求場景
哈嘍 大家好啊,今天遇到一個場景,
js實現獲取原生form表單的數據序列化表單以及將數組轉化為一個對象obj,將數組中的內容作為對象的key轉化為對象,對應的值轉換為對象對應的值
數組對象中某個屬性的值,轉換為新對象的屬性,數組對象中另外一個屬性的值,轉換為對應對象屬性的值輸出
(1)因為我是用原生寫的form表單,然后我想在確認的時候拿到form表單
(2)我的form表單是通過數組輪詢的,所以會有多個,我要將我填寫的表單組成一個數組對象的形式
類似下面遍歷的表單:
2.實現方案和代碼
首先我的表單定義一個class變量,后續根據我得到的數組進行遍歷的時候進行動態命名
<div v-for='item,index in selectedData'><form method="post" :class="'form'+index"></form>
</div>
這樣我的表單都有各個對應class的名稱了 form0? form1? form2....
然后我們在點擊確認事件的時候去拿表單序列化的數據
selectedDataTemp 是一個我的數組,根據數組生成對應的表單
let serializeFormData = [];selectedDataTemp.forEach((item,index) => {serializeFormData = $(`.form${index}`).serializeArray();console.log(serializeFormData,'serializeFormData')})
}
打印出來的serializeFromData
此時我們看到的是一個數組,里面每個對象里面都包含屬性name 和value 對應的是我們表單的屬性以及屬性值
所以我的目標是將數據轉換成一個對象
[{"name": "ImportedItems","value": "1"},{"name": "endUse","value": "0"},{"name": "region","value": "22"},{"name": "isControll","value": "1"},{"name": "exportCode","value": "22"}
]
想轉換成
{"ImportedItems": "1","endUse": "0","region": "33","isControll": "1","exportCode": "33"
}
實現方案:
var list = {};// for in 循環for (var key in serializeFormData) {let keyTemp = serializeFormData[key].name;let valueTemp = serializeFormData[key].value;list[keyTemp] = valueTemp;}完整代碼:
let serializeFormData = [];selectedDataTemp.forEach((item,index) => {serializeFormData = $(`.form${index}`).serializeArray();console.log(serializeFormData,'serializeFormData')var list = {};// for in 循環for (var key in serializeFormData) {let keyTemp = serializeFormData[key].name;let valueTemp = serializeFormData[key].value;list[keyTemp] = valueTemp;}console.log(list,'單個表單'); //控制臺打印formListData.push(list)})
最后打印的結果
參考原文:
js將數組轉化為一個對象obj,將數組中的內容作為對象的key轉化為對象,將數組中的某項內容作為分類來轉成對象_js將對象數組轉換為 key value foreach map-CSDN博客
就是我希望組裝的數據啦,好啦,今天就到這里啦,下次再見額!