javascript - 努力使用 for 循环向对象添加属性

标签 javascript

我正在尝试使用 for 循环来循环访问链接列表并将有关所述链接的信息添加到对象。

我已经成功地在 for 循环中使用数组访问将空对象添加到我已经存在的对象中:

for(let i = 0; i < linksHTML.length; i++) {
    //Add new obj to pageInfo.links
    pageInfo.links["link" + i] = '';
}

返回:

pageInfo = {
  currentPageURL: "https://www.volkswagen.fr/fr.html",
  links: {link0: "", link1: "", link2: ""...
  }
}

但是,我正在努力向新对象添加属性,如下所示:

for(let i = 0; i < linksHTML.length; i++) {
    //Add new obj to pageInfo.links
    pageInfo.links["link" + i] = '';
    //Add properties to newly created object
    pageInfo.links["link" + i].target = linksHTML[i].baseURI;
}
let pageInfo = {
    currentPageURL: window.location.href,
    links: {}
}

let linksHTML = document.getElementsByTagName("link");

for(let i = 0; i < linksHTML.length; i++) {
    //Add new obj to pageInfo.links
    pageInfo.links["link" + i] = '';
    //Add properties to newly created object
    pageInfo.links["link" + i].target = linksHTML[i].baseURI;
}

我希望看到

pageInfo = {
  currentPageURL: "https://www.volkswagen.fr/fr.html",
  links: {
    link0: {
      target: "https://www.volkswagen.fr/fr.html/somepage"
    }
  }
}

但是输出是

pageInfo = {
  currentPageURL: "https://www.volkswagen.fr/fr.html",
  links: {link0: "", link1: "", link2: ""... <-- Empty object with no new target property
  }
}

最佳答案

当您执行 pageInfo.links["link"+ i] = ''; 时,您分配的是一个字符串,而不是一个对象,请使用 {} 而不是 ''

关于javascript - 努力使用 for 循环向对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56550552/

相关文章:

javascript - Eventbug 的实际工作原理

javascript - 在变量中使用 Foreach 循环

javascript - 选择 :visible table cell with jquery does not work?

javascript - 将变量比较分配给 if/else 语句

javascript - IntelliJ - Unresolved JavaScript 引用

javascript - 如何扩展 KineticJS 形状

javascript - 使用新的运算符——来自 John Resig #36

javascript - 如果表单无效,是否会调用提交?

javascript - 将对象数组转换为数组

javascript - 在 GAS 中使用全局变量是否可取?有什么缺点吗?