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

时间:2019-06-11 19:28:41

标签: 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
  }
}

1 个答案:

答案 0 :(得分:3)

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