Javascript 循环中的Concat html标记
Im在数组循环中连接字符串以将其打印为Javascript 循环中的Concat html标记,javascript,jquery,arrays,loops,Javascript,Jquery,Arrays,Loops,Im在数组循环中连接字符串以将其打印为html。它只打印带有classgroup的div中的第一个anchor标记。我应该修改什么来打印组div中的锚?以下是一个例子: var数据=[{ “id”:1969年, “首次发布日期”:1083542400, “名称”:“项目1” }, { “id”:25076, “首次发布日期”:1083542400, “名称”:“第2项” }, { “id”:25076, “首次发布日期”:1540512000, “名称”:“第3项” }, { “id”:250
html
。它只打印带有classgroup
的div中的第一个anchor
标记。我应该修改什么来打印组div中的锚?以下是一个例子:
var数据=[{
“id”:1969年,
“首次发布日期”:1083542400,
“名称”:“项目1”
},
{
“id”:25076,
“首次发布日期”:1083542400,
“名称”:“第2项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第3项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第4项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第5项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第6项”
},
{
“id”:9245,
“首次发布日期”:1292976000,
“名称”:“第7项”
},
{
“id”:9245,
“首次发布日期”:1292976000,
“名称”:“第8项”
},
{
“id”:9245,
“首次发布日期”:1566950400,
“名称”:“第9项”
}
];
var tag=“”,
release=“”,
releaseChecker=0;
Object.keys(数据).forEach(函数(键){
if(数据[键]。首次发布日期!=发布检查器){
发布=新日期(数据[键]。首次发布日期*1000);
tag+=''+release.getDate()+'';
}
if(数据[键]。首次发布日期!=发布检查器){
标签+='';
}
标签+=',';
if(数据[键]。首次发布日期!=发布检查器){
标签+='';
}
releaseChecker=数据[key]。首次发布日期;
});
$(“.el”).html(标记)代码>
.group{
边框:1px纯黑;
}
您在结束div point时遇到问题
if (data[key].first_release_date != releaseChecker) {
tag += '</div>';
}
这应该行得通
var tag = "",
release = "",
releaseChecker = 0,
linkGroup = '';
var linkContainer = '';
Object.keys(data).forEach(function(key) {
if (data[key].first_release_date != releaseChecker) {
release = new Date(data[key].first_release_date * 1000);
tag += '<h4>' + release.getDate() + '</h4>';
linkContainer = '<div class="group">#linkGroup</div>';
}
linkGroup += '<a class="test" href="#">'+data[key].name+'</a>, ';
if (data[key].first_release_date != releaseChecker) {
tag += linkContainer.replace(/\#linkGroup/g, linkGroup);
}
releaseChecker = data[key].first_release_date;
});
$(".el").html(tag);
var tag=“”,
release=“”,
releaseChecker=0,
链接组=“”;
var linkContainer='';
Object.keys(数据).forEach(函数(键){
if(数据[键]。首次发布日期!=发布检查器){
发布=新日期(数据[键]。首次发布日期*1000);
tag+=''+release.getDate()+'';
linkContainer='#linkGroup';
}
链接组+=',';
if(数据[键]。首次发布日期!=发布检查器){
tag+=linkContainer.replace(/\\ linkGroup/g,linkGroup);
}
releaseChecker=数据[key]。首次发布日期;
});
$(“.el”).html(标记);
演示
Object.keys()
用于对象
,但是数据
在这里是数组。它可能起作用,但可能会导致一些意外行为
不要使用Object.keys()
下面是一个工作片段:
更新说明:您可以使用map
和join
来添加逗号,而不是在末尾使用硬编码,
var数据=[{
“id”:1969年,
“首次发布日期”:1083542400,
“名称”:“项目1”
},
{
“id”:25076,
“首次发布日期”:1083542400,
“名称”:“第2项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第3项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第4项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第5项”
},
{
“id”:25076,
“首次发布日期”:1540512000,
“名称”:“第6项”
},
{
“id”:9245,
“首次发布日期”:1292976000,
“名称”:“第7项”
},
{
“id”:9245,
“首次发布日期”:1292976000,
“名称”:“第8项”
},
{
“id”:9245,
“首次发布日期”:1566950400,
“名称”:“第9项”
}
];
var tag=“”,
release=“”,
releaseChecker=0,
groupedData=[];
data.forEach(功能(项){
发布=新日期(项目第一次发布日期*1000);
如果(!groupedData.find(d=>d.releaseDate===release.getDate()){
groupedData.push({releaseDate:release.getDate(),items:[]});
}
groupedData.find(d=>d.releaseDate==release.getDate()).items.push(item);
});
groupedData.forEach(函数(数据){
tag+=''+data.releaseDate+'';
标签+='';
tag+=data.items.map(函数(项){
返回“”;
})。加入(‘,’);
标签+='';
});
$(“.el”).html(标记)代码>
.group{
边框:1px纯黑;
}
您需要另一个内部循环来创建a
元素。但是,我看不出这段代码如何与您所说的得到的输出相匹配,因为它每次迭代只生成一个封装在div
中的a
。还应该提供数据样本,以便我们可以重现问题。单击问题编辑器中的
将其转换为可运行的代码段。此外,如果您确实希望在输出中使用换行符和缩进,则需要进行更改,如'.\n'
和tag+='@charlietfl,我已使用代码段示例更新了代码。虽然代码可能会解决此问题,始终提供一个解释,说明发生了什么变化以及为什么人们不必搜索差异与对象一起使用的不是对象。key()
?数组在JavaScript中被视为对象,所以我认为使用Object.key()是可以的对于返回索引数组的数组,您是对的,但是获取密钥然后使用它访问而不是仅使用forEach
并获取值不是多余的吗?我认为,问题与索引无关。
var tag = "",
release = "",
releaseChecker = 0,
linkGroup = '';
var linkContainer = '';
Object.keys(data).forEach(function(key) {
if (data[key].first_release_date != releaseChecker) {
release = new Date(data[key].first_release_date * 1000);
tag += '<h4>' + release.getDate() + '</h4>';
linkContainer = '<div class="group">#linkGroup</div>';
}
linkGroup += '<a class="test" href="#">'+data[key].name+'</a>, ';
if (data[key].first_release_date != releaseChecker) {
tag += linkContainer.replace(/\#linkGroup/g, linkGroup);
}
releaseChecker = data[key].first_release_date;
});
$(".el").html(tag);