У меня есть сценарий для загрузки данных с помощью обратного вызова, например:
for(i = 0; i < allposts.length; i++){
....
if ((i >= 0) && (i < 3)) {
a += '<li><a href="'+link+'">'+post-title+'</a></li>';
}
}
list = a;
document.getElementById('portfolio-list').innerHTML += list;
Когда для конца цикла будет добавлено 3 сообщения. Это означает, что каждый цикл у нас есть:
<li><a href="link1">title1</a></li>
<li><a href="link2">title2</a></li>
<li><a href="link3">title3</a></li>
Для 2 циклов (используя += list
), например, у меня есть:
<li><a href="link1">title1</a></li>
<li><a href="link2">title2</a></li>
<li><a href="link3">title3</a></li>
<li><a href="link2">title2</a></li>
<li><a href="link4">title4</a></li>
<li><a href="link5">title4</a></li>
Вы можете видеть: link2 is repeated
. Я хочу поймать на каждом цикле и сломаться, если он повторяется.
Это означает, что у меня есть результат:
<li><a href="link1">title1</a></li>
<li><a href="link2">title2</a></li>
<li><a href="link3">title3</a></li>
<li><a href="link4">title4</a></li>
<li><a href="link5">title5</a></li>
Как я могу сделать это с помощью Javascript?
Вот шаблон, о котором я думал в своем комментарии ранее:
var shownLinks = [];
for(i = 0; i < allposts.length; i++){
....
if ((i >= 0) && (i < 3)) {
// Only show a link, if it wasn't before
if(shownLinks.indexOf(link) == -1) {
a += '<li><a href="'+link+'">'+post-title+'</a></li>';
// Add the link to the array
shownLinks.push(link);
}
}
}
list = a;
document.getElementById('portfolio-list').innerHTML += list;
var links = {};
for(i = 0; i < allposts.length; i++){
....
if ((i >= 0) && (i < 3) && !links[link]) {
a += '<li><a href="'+link+'">'+post-title+'</a></li>';
links[link] = true;
}
}
попробуйте это, я не знаю, как вы обновляете переменную c
var temp =[];
for(i = 0; i < allposts.length; i++){
....
if ((i >= 0) && (i < 3)) {
if(temp.indexOf(link) == -1)
{
a += '<li><a href="'+link+'">'+post-title+'</a></li>';
temp.push(link);
}
}
}
c
? что приводит к печати ссылки1 и т. д.