转换和分组树对象中的字符串数组
Coverting and grouping an string array in a tree object
我有以下数组:
var exampeInclude= [
"Product",
"Group",
"Product.Tax",
"Product.ProductUnit",
"Product.Variant.Original",
"Product.Variant.Original.Tax",
"Product.Variant.Original.ProductUnit"
];
我需要从这个数组中得到以下结构:
[
{
"Product": {
"includes": [
{
"Tax": {
"includes": []
}
},
{
"ProductUnit": {
"includes": []
}
},
{
"Variant": {
"includes": [
{
"Original": {
"includes": [] //...
}
}
]
}
}
]
}
},
{
"Group": {
"includes": []
}
}
]
有点像树形结构。但我没有得到正确的解决方案。我所尝试的一切都以有线foreach告终,这些foreach很快就无法调试。到目前为止,我最好的是一个简单的简化函数,但我如何实现split('.')
到这个?需要递归吗?
我现在拥有的最好的:
var hist = exampeInclude.reduce(function (prev, item) {
if( item in prev ) prev[item] ++;
else prev[item] = 1;
return prev;
}, {});
我知道它不多,但它很重要。但我认为reduce
是一个很好的开始)
我将从路径构建一个树,最后添加中间的'includes'数组
function buildFromPath(tree, pathVar){
var a = pathVar.split('.'),
parent = tree;
for(var i = 0, max = a.length; i < max; i++){
var n = a[i];
if(!(n in parent)) parent[n] = {};
parent = parent[n];
}
}
var exampeInclude= [
"Product",
"Group",
"Product.Tax",
"Product.ProductUnit",
"Product.Variant.Original",
"Product.Variant.Original.Tax",
"Product.Variant.Original.ProductUnit"
],
tree = {};
for(var i = 0, max = exampeInclude.length; i < max; i++){
buildFromPath(tree, exampeInclude[i]);
}
// normally here you should have a tree structure
// like {Product:{Tax:{},ProductUnit:{},Variant:{Original:{Tax:{},ProductUnit:{}}}},Group:{}}
// then you parse the tree and add format with intermediates
function formatObj(obj){
var res = [];
for(var name in obj){
var o = obj[name];
res.push(o);
o.includes = formatObj(o);
}
return res;
}
var res = formatObj(tree);
相关文章:
- 将JSON转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串