Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环中的Concat html标记_Javascript_Jquery_Arrays_Loops - Fatal编程技术网

Javascript 循环中的Concat html标记

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

Im在数组循环中连接字符串以将其打印为
html
。它只打印带有class
group
的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);