我有三个对象数组,我需要从每个数组中的每个对象中提取一个数据,并将它们暴露在 html 文档的不同段落中。不幸的是,每个数据都会打印几次。数组之一是:
let objDos = {
Dental: [
{
HORA: "8:30",
ESPECIALISTA: "ANDREA ZUÑIGA",
PACIENTE: "MARCELA RETAMAL",
RUT: "11123425-6",
PREVISION: "ISAPRE"
},
{
HORA: "11:00",
ESPECIALISTA: "MARIA PIA ZAÑARTU",
PACIENTE: "ANGEL MUÑOZ",
RUT: "9878789-2",
PREVISION: "ISAPRE"
},
{
HORA: "11:30",
ESPECIALISTA: "SCARLETT WITTING",
PACIENTE: "MARIO KAST",
RUT: "7998789-5",
PREVISION: "FONASA"
},
{
HORA: "13:00",
ESPECIALISTA: "FRANCISCO VON TEUBER",
PACIENTE: "KARIN FERNANDEZ",
RUT: "18887662-K",
PREVISION: "FONASA"
},
{
HORA: "13:30",
ESPECIALISTA: "EDUARDO VIÑUELA",
PACIENTE: "HUGO SANCHEZ",
RUT: "17665461-4",
PREVISION: "FONASA"
},
{
HORA: "14:00",
ESPECIALISTA: "RAQUEL VILLASECA",
PACIENTE: "ANA SEPULVEDA",
RUT: "14441281-0",
PREVISION: "ISAPRE"
}
]
}
对于这个数组,我应用以下代码
let array = objDos.Dental;
for(item of array){
let paragraph = []
for(let value in item){
paragraph.push(item.PACIENTE);
}
console.log(paragraph);
}
但是在浏览器控制台中它返回了我
(5) ["MARCELA RETAMAL", "MARCELA RETAMAL", "MARCELA RETAMAL", "MARCELA RETAMAL", "MARCELA RETAMAL"]
VM457:54 (5) ["ANGEL MUÑOZ", "ANGEL MUÑOZ", "ANGEL MUÑOZ", "ANGEL MUÑOZ", "ANGEL MUÑOZ"]
VM457:54 (5) ["MARIO KAST", "MARIO KAST", "MARIO KAST", "MARIO KAST", "MARIO KAST"]
VM457:54 (5) ["KARIN FERNANDEZ", "KARIN FERNANDEZ", "KARIN FERNANDEZ", "KARIN FERNANDEZ", "KARIN FERNANDEZ"]
VM457:54 (5) ["HUGO SANCHEZ", "HUGO SANCHEZ", "HUGO SANCHEZ", "HUGO SANCHEZ", "HUGO SANCHEZ"]
VM457:54 (5) ["ANA SEPULVEDA", "ANA SEPULVEDA", "ANA SEPULVEDA", "ANA SEPULVEDA", "ANA SEPULVEDA"]
undefined
与此不同的是,我正在寻找的是
Marcela retamal
Angel Muñoz
Mario Kast
Karin Fernandez
Hugo Sanchez
Ana Sepulveda
然后将其复制到另外三个数组中,并使用 innerHTML 方法将此结果输出到 html 文档
您的代码中有几个错误。
您在循环内定义变量段落,因此它将被定义多次,但最终,您希望它累积值,因此您应该只在循环外定义一次。
由于您只想从数组的每个元素中检索患者,因此您只需遍历数组即可直接提取它,您不需要遍历其属性(请记住,您需要每个对象的单个属性)。
像变量声明一样,打印应该只发生一次,在完成遍历数组之后。您将其发送打印多次,每次循环迭代一次。
纠正这些问题,代码将如下所示:
单击“运行”按钮在浏览器中尝试一下。
你好吗?
在 for 循环中,对于Dental数组中的对象,您的段落数组将被填充/重复 6 次。此外,您可以避免访问变量、空的和多次乏味的迭代。
简化,我建议使用ES8/ES6的以下解决方案,更简洁,更易于理解以实现您正在寻找的东西,获得相同的结果。
Object.values
将属性的值作为数组返回,在这种情况下,它将通过直接访问Dental获取对象的值,并map
负责过滤PATIENT键,在新数组中返回它们的值。