form表单多维对象赋值
原数据
let obj = { a.b.c:111, // c:2, a.b.d:3, date.name:ceso }
目标数据
{ a: { b: { c: 111, d: 3 } }, date: { name: ceso } }
案例
let obj = { a.b.c:111, // c:2, a.b.d:3, date.name:ceso } var deepExtend = require(deep-extend);//这个是写好的插件 deepExtend1//是本人简化版本的 不是特别严谨但是能用 let arrvalue =[] let arrkey =[] for (const key in obj) { if (Object.hasOwnProperty.call(obj, key)) { const element = obj[key]; arrkey.push(key.split(.)) arrvalue.push(element) } } let newObjArr =[] for (let index = 0; index < arrkey.length; index++) { let element = arrkey[index]; // console.log(element :>> , element); let arrsss =element.reverse().reduce((obj,currentValue,c,Arr)=>{ let objNew ={ } if(c==0){ obj[currentValue] =arrvalue[index] objNew = obj }else{ let objs= { } objs[currentValue] = obj objNew = objs } return objNew },{ }) newObjArr.push(arrsss) } let arr = newObjArr.reduce((obj,currentValue,c,Arr)=>{ if(c==0){ obj = currentValue return obj } return deepExtend1(obj,currentValue) },{ }) function deepExtend1(obj1,obj2) { let target = obj1 Object.keys(obj2) .forEach(key=>{ if(typeof target[key]==object){ deepExtend1(target[key],obj2[key]) return }else if(!target[key]){ target[key]=obj2[key] } else { deepExtend1({ },obj2[key]) return } }) return target }
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
matlab图像处理之边缘检测基础算法