我当前正在用javascript循环对象,并成功从_source
级别获得了我需要的东西。我现在的问题是,color
中_source
下还有另一个数组。
当前,console.log(searchResult);
给了我这个对象:
1
_source
color
1
color_type
type
name
id
我可以访问type
和color
,因为它们处于_source
级别,但我需要访问color_type
,它是{{1 }},显然它必须是我最初建立索引的元素中包含的信息。
我是否需要在此处创建新的循环来访问color
信息?
color
答案 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;
}
}
}