如何使用javascript列出数据对象中的元素
我有一个目标如何使用javascript列出数据对象中的元素,javascript,object,filter,Javascript,Object,Filter,我有一个目标 var productObj = { "product_7": ["level1_group19", "level2_group36"], "product_1": ["level1_group19", "level2_group27"], "product_8": ["level1_group20"
var productObj = {
"product_7": ["level1_group19", "level2_group36"],
"product_1": ["level1_group19", "level2_group27"],
"product_8": ["level1_group20"],
"product_5": ["level1_group19", "level2_group35"],
"product_2": ["level1_group19", "level2_group27"],
"product_6": ["level1_group19", "level2_group35"],
"product_3": ["level1_group19", "level2_group27"],
"product_4": ["level1_group19", "level2_group27", "level3_group37"],
"product_10": ["level1_group21"],
"product_11": ["level1_group21"],
"product_9": ["level1_group21", "level2_group30"],
"product_15": ["level1_group24"],
"product_16": ["level1_group24"],
"product_13": ["level1_group23"],
"product_12": ["level1_group22"]
}
如何使用javascript(可能使用jQuery)从每个产品的数组值构建如下ul list元素
- 一级组19
- 二级组36
- 二级组27
- 三级组37
- 二级组35
- 级别1_组20
- 级别1_组21
- 二级组30
let result = {};
for (let property in productObject) {
if (!productObject.hasOwnProperty(property)) {
continue;
}
// Add groups to result hierarchy
// Something like:
result[productObject[property][0]] = {};
}
此外,我真的了解您的逻辑,因为数组中的层次结构没有给出
我想,你想在数组上循环并检查级别
然后,您可以将其添加到结果对象中的最后一个层次结构中,并最终对其进行迭代,以显示它。在我的示例中,它正在工作
var productObj={
“产品7”:[“1级集团19”、“2级集团36”],
“产品1”:[“1级集团19”、“2级集团27”],
“产品8”:[“1级集团20”],
“产品5”:[“1级集团19”、“2级集团35”],
“产品2”:[“1级集团19”、“2级集团27”],
“产品6”:[“1级集团19”、“2级集团35”],
“产品3”:[“1级集团19”、“2级集团27”],
“产品4”:[“1级集团19”、“2级集团27”、“3级集团37”],
“产品10”:[“1级集团21”],
“产品11”:[“1级集团21”],
“产品9”:[“1级集团21”、“2级集团30”],
“产品15”:[“1级集团24”],
“产品16”:[“1级集团24”],
“产品13”:[“1级集团23”],
“产品12”:[“1级集团22”]
}
var levelObj={};
var createNestedObject=函数(基、名称、值){
//如果给定了值,请删除姓氏并保留它以备将来使用:
var lastName=arguments.length==3?names.pop():false;
//遍历层次结构,在需要的地方创建新对象。
//如果删除了lastName,则尚未设置最后一个对象:
对于(var i=0;i;
用于(obj中的var i){
if(对象为自有财产(i)){
ul+=''+i;//fil[i]
如果(对象[i]的类型=='object'&&object.keys(对象[i])。长度>0){
级别++;
if(Array.isArray(obj[i])&&obj[i].length>0){
ul+=';
obj[i].forEach(函数(val,index,arr){
ul+='- '+val+'
';
});
ul+='
';
}否则{
建筑导航(obj[i],标高);
}
}
ul+=' ';
}
}
ul+='';
}
//准备HTML
楼宇导航(levelObj,1);
//创建Dom节点。
$list=$(ul);
$('prodnav')。追加($list)代码>
So“product_7”:[“level1_group19”,“level2_group36”]
意味着有一个“product_7”在“level2_group36”中,而它本身在“level1_group19”中-这是正确的吗?level1_、level2_等都是产品的属性。那么如何建立这个列表呢?这是什么关系?您如何知道“level2_group36”应位于“level1_group19”之下?我们知道“level2_group36”应位于“level1_group19”之下,因为这两个属性都存在于同一个产品中,并且指定的级别号(1,2,3..)指示它应显示的列表级别。可以从指定的级别号(1,2,3..)来描述层次结构,指示其应显示的列表级别。