Published
Edited
Oct 11, 2021
Insert cell
md`# 数据转换`
Insert cell
/**
* 写一个函数实现以下数据转换:
* {a: {b: {c:1}}, d:[1,2]}
* 转换成:
* {'a.b.c': 1, 'd[0]':1, 'd[1]':2}
*/
transToPath = (obj) => {
const result = {};
const transfer = (obj, preKey = '') => {
if(typeof obj === 'object'){
if(obj === null){
result[preKey] = null;
}else if(Array.isArray(obj)){
const arr = [];
for(let i=0,len=obj.length; i< len; i++){
const value = obj[i];
transfer(value, `${preKey}[${i}]`)
}
}else{
const keys = Object.keys(obj);
for(let j=0,len=keys.length; j< len; j++){
const key = keys[j];
transfer(obj[key], `${preKey}${preKey ? '.' : ''}${key}`)
}
}
}else{
result[preKey] = obj;
}
}
transfer(obj);
return result;
}

Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more