Comments (3)
let strarr = {
'a-b-c-d':1,
'a-b-c-e':2,
'a-b-f':3,
'a-j':4
}
const data = Object.keys(strarr).reduce(function (acc, cur) {
const _keys = cur.split('-');
let tmp = acc;
_keys.forEach((key, idx) => {
if (idx === _keys.length - 1) {
tmp[key] = strarr[cur];
} else {
if (!tmp[key]) tmp[key] = {};
tmp = tmp[key];
}
});
return acc;
}, {});
from js-challenges.
function strToTree(strArr){
let objTree = {}
const dfs = (arr,obj,val) => {
for(let i=0; i<arr.length-1; i++){
if(!obj[arr[i]]) obj[arr[i]] = {}
obj = obj[arr[i]]
}
obj[arr[arr.length-1]] = val
}
for(let str in strArr){
dfs(str.split('-'),objTree,strArr[str])
}
return objTree
}
console.log(strToTree(strArr))
from js-challenges.
- 迭代
function strObjtoTree(strarr) {
let obj = {};
for (let key in strarr) {
let propertyNames = key.split('-');
let lastPropertyName = propertyNames.pop();
let nestedObj = obj;
for (let propertyName of propertyNames) {
nestedObj[propertyName] = nestedObj[propertyName] || {};
nestedObj = nestedObj[propertyName];
}
nestedObj[lastPropertyName] = strarr[key];
}
return obj
}
- 递归
function convertToObject(strarr) {
const result = {};
for (let key in strarr) {
const keys = key.split('-');
let obj = result;
for (let i = 0; i < keys.length - 1; i++) {
const k = keys[i];
obj[k] = obj[k] || {};
obj = obj[k];
}
obj[keys[keys.length - 1]] = strarr[key];
}
return result;
}
from js-challenges.
Related Issues (20)
- 正则表达式匹配URL HOT 1
- repeat
- add
- CamelCase
- 洗牌算法 HOT 1
- 工厂模式
- 代理模式 HOT 1
- 装饰器模式 HOT 1
- 手写new关键字 HOT 1
- 实现有序数组生成平衡二叉搜索树,ACM模式(2023美团暑期实习一面手撕)
- 版本号排序(2023美团暑期实习一面) HOT 2
- 将html字符串转为树状结构
- 对象去重 HOT 2
- 【开源自荐】推荐一个每日更新的前端面试题库
- bind
- 我的解决方案
- 【开源自荐】SolidUI 一句话生成任何图形
- 百度2023秋招:把数组排成最小的数 HOT 5
- 实现简易版的useState HOT 1
- 手写Instanceof详细 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-challenges.