代码之家  ›  专栏  ›  技术社区  ›  Geoff_S

对象上现有循环内的循环

  •  0
  • Geoff_S  · 技术社区  · 6 年前

    我目前正在用javascript循环一个对象,并成功地从 _source 水平。我现在的问题是下面有另一个数组 color 里面 γ源 .

    目前, console.log(searchResult); 给我这个物体:

    1
      _source
        color
          1
            color_type
        type
          name
            id
    

    我可以访问 type 颜色 因为他们在 γ源 级别,但我需要访问 color_type 它是另一个数组的一部分 颜色 它显然需要包含在我最初的索引元素中的信息。

    我需要在这里创建一个新循环来访问 颜色 信息?

        let searchResult = response.hits.hits;
        console.log(searchResult);
        for(let i = 0; i < searchResult.length; i++) {           
    
                    //This line displays the name.id properly
                    document.getElementById("name").value = searchResult[i]._source.type.name.id;   
    
                    //this line gives undefined         
                    document.getElementById("color").value = searchResult[i]._source.color[i].color_type;
            })  
        }
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Chukwuemeka Inya    6 年前

    因为您只对第二个元素(索引1)感兴趣,所以应该这样做:

    document.getElementById("color").value = searchResult[i]._source.color[1].color_type;
    
        2
  •  1
  •   Sujil Maharjan    6 年前

    因为color也是一个数组,而您正在尝试color[i],所以它通过searchresult数组的索引在color数组中查找多个索引。

    如果您只对颜色数组的第一个元素感兴趣,那么应该这样做:

    document.getElementById("color").value = searchResult[i]._source.color[0].color_type;

    而不是分配 i ,你指派 0 只获取第一种颜色。

    如果要查找多种颜色,则需要创建一个单独的循环,该循环仅从 color[0] color[color.length]

        3
  •  1
  •   Libor PlíÅ¡ek    6 年前

    如果你是 当然 颜色中的键将 永远是1 只需使用:

    document.getElementById("color").value = searchResult[i]._source.color[1].color_type;
    

    如果你是 不确定 ,用途:

    for (let i = 0; i < searchResult.length; i++) {           
    
        document.getElementById("name").value = searchResult[i]._source.type.name.id;   
    
        for (let j = 0; j < searchResult[i]._source.color.length; j++) { 
    
            // this set to the #color element the first not undefined color_type from color array
            if (searchResult[i]._source.color[j].color_type != undefined) {
    
                document.getElementById("color").value = searchResult[i]._source.color[j].color_type;
                break;
    
            }         
    
        } 
    
    }