- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用模板文字将数据集成到字符串中。我正在设法做到这一点,除非数据是 Collection.set 类型。
我的数据由一个名为 Company 的表组成,其中包含多条记录。我需要在其中循环以检索每个公司的数据(这一点没问题并且已经可以工作),但是然后在每个公司内部名为 company_tags 的属性/列之一是 Collection.set 类型我需要循环(循环内的某种循环)来检索数据,以便将其注入(inject)到模板文字中,而这部分我未能做到。
Javascript代码
var html = "";
result.forEach(function(msg) {
console.log(msg);
console.log(msg.company_tags);
msg.company_tags.forEach(function(value) {
console.log(value);
});
html += `
<tr id="company-1234" data-id="1234">
<td class="name">
<h2>This is the company name ${msg.company_name}</h2> for which they agree to send an email to ${msg.company_email}
<td class="location">
<h3> ${msg.company_location_city}</h3>
</td>
<td class="tags">
<h2>yhis is one of the company tags: <b>${msg.company_tags[i]} </b> and it looks nice</h2>
</td>
</tr>
`;
});
document.getElementById("target").innerHTML = html;
当然是上面的部分<h2>This are the company tags: ${msg.company_tags[i]}
不起作用。
我做了几次尝试来达到这个集合集,但都失败了。
上面代码中名为“msg”的全局数据来自第三方。为了向您展示我需要解析/循环/检索的数据结构,如下所示是您在上面的代码中看到的 console.log 的结果:
数据如下:这是上面代码中console.log显示的公司记录之一:
console.log(msg) 输出
c {createdAt: Wed Jul 04 2018 16:49:56 GMT+0200 (CEST), updatedAt: Mon Jul 09 2018 15:26:25 GMT+0200 (CEST), _metadata: d}
company_email: "companyemail1@example.com"
company_name: "example name"
company_location : "Dublin"
company_tags: Set(3)
updatedAt: and so on...
d {_isLocked: false, _readyPromise: Promise, _deferred: null, _root: c, _state: 0, …}
console.log(msg.company_tags) 输出一些我不确定完全理解的内容。好像就是所谓的Collection set。
Set(3) {"tag1", "improvement", "sexy"}
size : 3
__persistedSize__ : 3
__persistedState__:
{tag1: "tag1", improvement: "improvement", sexy: "sexy"}
__proto__ : Set
[[Entries]] : Array(3)
> 0 : "tag1"
> 1 : "improvement"
> 2: "sexy"
length : 3
今天,当我的 javascript 代码(见上文)运行时,我设法在 html 中为“字符串”类型的列显示正确的数据。所以下面的部分对我来说效果很好:
<h2>This is the company name ${msg.company_name}</h2> for which they agree to send an email to ${msg.company_email}
但是下面带有 Collection.set 类型列的部分不起作用并显示“未定义”
<td class="tags">
<h2>This is one of the company tags: ${msg.company_tags[i]}
</td>
就像我需要再次循环(在另一个loopForEach内)。
一些失败的尝试:
var html = "";
result.forEach(function(msg) {
html += `
<tr id="company-67851" data-id="67851">
<td class="name">
<h2>This is the company name ${msg.company_name}</h2> for which they agree to send an email to ${msg.company_email}
<td class="location">
<h3> ${msg.company_location_city}</h3>
</td>
<td class="tags">
<h2>This is one of the company tags: <b>${ msg.company_tags.forEach(function(value) {
<h2>value</h2>
</div>
</a>
});
} </h2> and it looks nice
</td>
</tr>
`;
});
document.getElementById("target").innerHTML = html;
我也尝试过
${ msg.company_tags.forEach( (k, v) => `<h2>${v}</h2>`).join(" ") }
还有
${msg.company_tags.map(company_tag => <h2>This is one of the company tags: ${company_tag}</h2> and it looks nice`).join('')}
但我总是收到 UNDEFINED 错误,甚至有时会出现错误 Uncaught (in promise): TypeError: .map is not a function
到目前为止还没有任何效果。作为一个 javascript 菜鸟,这有点超出我的理解范围。
我的目标是,例如,我在 html 中看到我上面给出的记录示例:
<td class="tags">
<h2>This is one of the company tags: <b>tag1</b> and it looks nice</h2>
<h2>These are the company tags: <b>imrovement</b> and it looks nice</h2>
<h2>These are the company tags: <b>sexy</b> and it looks nice</h2>
</td>
最佳答案
似乎您需要将 msg.company_tags
设置转换为数组:
var company_tags = []
msg.company_tags.forEach((k,v) => company_tags.push(v))
那么您应该能够对其进行map
而不是forEach
,因为只有map
从函数forEach
返回> 用于副作用。您还可以将公司标签的生成提取到单独的函数中。
${company_tags.map(company_tag => `<h2>This is one of the company tags: ${company_tag}</h2> and it looks nice`).join('')}
关于Javascript 模板文字 - 检索子集合集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259949/
我以前使用过像 Netbeans 和 eclipse 这样的 IDE。 我在 friend 的电脑上下载了“Visual Studio Express 2013 for windows desktop
我正在尝试弄清楚如何在 GBA 大小的 EZ Flash 3 合 1 卡中对 PSRAM 进行编程。基本上重复 GBA Exploader 和其他程序所做的事情。 如果我选择一个 block 并对其进
Filter1=re.findall(r'',PageSource) Filter2=re.findall(r'',PageSource) Filter3=re.findall(r'(.*?).*?'
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我是一名优秀的程序员,十分优秀!