我想在提交中检索表单内容并将该数据映射到对象中。
let userData = $(e.currentTarget).serializeArray();
let userDataObject = this.serializedToObject(userData);
- 要通过POST发送的模板对象
serializedToObject(serializedArray) {
let templateObject = {
privider: '',
pop3: {
host: '',
port: 110,
ssl: false
},
imap: {
host: '',
port: 993
},
email: '',
password: ''
};
for (let data in serializedArray) {
}
return templateObject;
}
- userData的形式是
[Object, Object, Object, Object, Object, Object, Object]
- 虽然对象的格式为
Object: {
name: 'provider',
value: 'Aladin'
}
Object: {
name: 'imap-host',
value: '955'
}
Object: {
name: 'imap-port',
value:
}
Object: {
email: 'test@gmail.com',
value:
}
所以我需要一些帮助来将该对象数组映射到templateObject。 AnyHelp将受到高度赞赏。
更新
[{"name":"name","value":"Nicholas Barbaros"},{"name":"email","value":"george@google.com"},{"name":"password","value":"nicu121-mujik"},{"name":"imap","value":"imap.server.com"},{"name":"imap-port","value":"ad"},{"name":"pop3-host","value":"pop.server.com"},{"name":"pop3-port","value":"465"}, {"name":"pop3-ssl","value":"false"}]
答案 0 :(得分:2)
每个serializedArray
对象的名称属性都有一个表示嵌套对象的减号(-
),您可以按这些字符拆分,然后设置{{1}的值}的属性:
templateObject
答案 1 :(得分:0)
您还可以使用reduce方法,以更实用的方式
const array = [{
name: 'provider',
value: 'Aladin'
},{
name: 'imap-host',
value: '955'
},{
name: 'imap-port',
value: 'something'
}];
const newObject = array.reduce( (acc, item, {}) => {
acc[item.name] = item.value;
return acc;
})
console.log(newObject);
答案 2 :(得分:0)
迭代序列化数组并将其映射到嵌套对象有太多开销。
请考虑这种不太复杂的方法:
@IBOutlet weak var imageView: UIImageView!
我在这里猜到了一些领域。如果需要,请更正。