创建一个函数,在一行中输出具有不同 links 的 linked 文本,如果 link 存在,则将 links 映射到文本

creating a function that outputs linked text with different links on a single line, mapping links onto text if link exists

大家好,我正在编写一个函数,它将接收一串名称,然后对于列表中的每个名称,它将获取名称的文本并向其添加 link ,如果不是,它只会显示文本。目的是在显示时将所有这些都放在一行中。

function founderslinked(foundernames,foundersqueryname){
  var foundernames=foundernames.split(", ");
   var founderslinkstring='';
  foundernames.map((foundername)=>{
    var foundernamelower=foundername.toLowerCase();
    var foundernamelower=foundernamelower.replace(/\s+/g, '-');
    if(founderqueryname.indexOf(foundernamelower>=0)){
      var thelink=`${links.index}/about/contributors/${foundernamelower}`;
      var thelink="<a href="+thelink+">"+foundername+"</a>";
      var thelink.innerHTML=thelink;

      founderslinkstring=founderslinkstring+","+thelink.

    }else{
         founderslinkstring+=founderslinkstring+" "+foundername;



   }
 
    
  })
return{founderslinkstring
}
}

founder names 将是格式为“John Doe, Matt Jones, F运行k Smith”的字符串,founderqueryname 将是格式为 ['john-doe','f运行k-smith]。 founderqueryname 数组是拥有个人页面的人的查询数组;如果带有他们名字和姓氏的查询在 founderqueryname 中,这意味着他们有一个个人页面并且可以 linked 到。

我基本上想用这个函数在一行中显示他们所有的名字。所以我想输入名称字符串和查询数组。如果有一个带有他们名字的查询,我想将带有 link 的他们的名字添加到我们将显示的单行中。如果没有关于他们名字的查询,我只想在行中添加没有 link 的文本。使用上面的数组和字符串,调用字符串和数组时的函数

{founders linked(namesoffounders,queryoffounders);}

应该显示如下内容:

John Doe( text and link),Matt Jones(only text no link), Frank Smith(text and link)

"thelink" 本质上是通往个人页面的途径,如果他们有个人页面的话,我会在他们的页面上添加带有 link 的名字(如果他们有页面的话)。然而,这是行不通的。我只得到字符串形式的文本,对我做错了什么有什么想法吗?

编辑:根据@jaramanda x 的建议,我通过使用他建议的修复来渲染它 运行:

{JSON.stringify(founderslinked(thelistoffounders,thelistoffounderqueries))}

但是上面的内容呈现为这样的文本:

显示的名称和文本都是正确的 link 但是,没有,它们没有显示为实际的 link 有什么想法吗?

我认为这解决了您代码中的所有问题,并产生了预期的输出

尽管我添加了一个带有 index 属性 的虚拟 links,因为您的代码中完全没有

var links = {
    index: 'xxx'
};
function founderslinked(foundernames, foundersqueryname) {
    return {
        founderslinkstring: foundernames.split(", ")
        .map((foundername) => {
            const foundernamelower = foundername.toLowerCase().replace(/\s+/g, '-');
            if (foundersqueryname.includes(foundernamelower)) {
                return `<a href="${links.index}/about/contributors/${foundernamelower}">${foundername}</a>`;

            } else {
                return foundername;
            }

        })
        .join(',')
    };
}
console.log(founderslinked("John Doe, Matt Jones, Frank Smith", ['john-doe', 'frank-smith']));