Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript列出数据对象中的元素_Javascript_Object_Filter - Fatal编程技术网

如何使用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..)来描述层次结构,指示其应显示的列表级别。