在实现Excel导入数据到网页中时,经常容易遇到的一个问题就是key的语言不统一,后端接口常规统一要求接收英文,所以我们要将key统一成英文.
下面是后端接口要求的示例格式
处理内容:字段中文转英文。例如excel中读入的是姓名
,而后端需要的是username
为了方便维护代码,单独封装一个方法来实现这个转换的功能。
// 思路:对于原数组每个对象来说
// (1) 找出所有的中文key
// (2) 得到对应的英文key
// (3) 拼接一个新对象: 英文key:值
transExcel(results) {
// 首先需要一个我们写好的用来映射的对象或数组
const mapInfo = {
'入职日期': 'timeOfEntry',
'手机号': 'mobile',
'姓名': 'username',
'转正日期': 'correctionTime',
'工号': 'workNumber',
'部门': 'departmentName',
'聘用形式': 'formOfEmployment'
}
return results.map(zhObj => {
// 首先创建一个空对象来逐个接收转换后的key
const enObj = {}
// 使用Object.keys方法来获取中文的key
const zhKeys = Object.keys(zhObj) // ['姓名', '手机号']
// 用forEach循环来将key逐个映射(map)出去
zhKeys.forEach(zhKey => {
const enKey = mapInfo[zhKey] // 如果是一个对象具体的某个属性,就用 对象.(属性),此处非确切值,则为 对象[属性] 写法
enObj[enKey] = zhObj[zhKey] // 将空对象所需要接收的值传入
})
return enObj
})
}
思路总结:
由于我们的业务需求是'转换', 所以可以用map方法来做
而又因为需要逐一对应,所以要用到循环,这里我们可以用forEach
如果后端有返回翻译的字段且键值对反了,推荐看我的这篇博客http://t.csdn.cn/rd2YR