在对象

时间:2018-08-29 16:42:39

标签: javascript

我当前正在用javascript循环对象,并成功从_source级别获得了我需要的东西。我现在的问题是,color_source下还有另一个数组。

当前,console.log(searchResult);给了我这个对象:

1
  _source
    color
      1
        color_type
    type
      name
        id

我可以访问typecolor,因为它们处于_source级别,但我需要访问color_type,它是{{1 }},显然它必须是我最初建立索引的元素中包含的信息。

我是否需要在此处创建新的循环来访问color信息?

color

3 个答案:

答案 0 :(得分:1)

由于您只对第二个元素(索引1)感兴趣,因此应该可以解决问题:

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

答案 1 :(得分:1)

由于color也是一个数组,并且您正在尝试color [i],因此它将通过searchResult数组的索引在color数组中查找多个索引。

如果您只对颜色数组的第一个元素感兴趣,则应执行以下操作:

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

您分配i而不是分配0仅获得第一种颜色。

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

答案 2 :(得分:1)

如果您确定,则颜色键将始终为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;

        }         

    } 

}