创建一个函数,在一行中输出具有不同 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']));
大家好,我正在编写一个函数,它将接收一串名称,然后对于列表中的每个名称,它将获取名称的文本并向其添加 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']));