gpt4 book ai didi

javascript - 仅当项目类型更改时才返回结果的 Switch 语句

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:01 24 4
gpt4 key购买 nike

我有一系列内容,简化后如下所示:

[
{ content_type: 1, content_body: "some text" },

{ content_type: 1, content_body: "some text" },

{ content_type: 2, content_body: "media link" },

{ content_type: 1, content_body: "some text" }
]

我现在需要通过这个数组进行映射,并有一个 switch 语句检查 content_type 并根据它呈现 HTML,所以类似于(注意下面的语法使用 jsx,所以它看起来可能与普通 JavaScript 不同,但它是非常不言自明的)。

switch(item.content_type) {
case 1:
render (
<div class="text_content">
<p>{item.content_body}</p>
</div>

)
case 2:
render (
<div class="text_media">
<div>{item.content_body}</div>
</div>

)
}

现在的问题是,如果相同的内容类型在数组中一个接一个地出现(例如,前 2 个条目的 content_type 为 1),我希望它们的 content_bodies 在一个 div 中呈现,所以

<div class="text_content">
<p>{item.content_body}</p>
<p>{item.content_body}</p>
</div>

如果下一个 content_type 不同,则继续。 (这可以在应用程序中重复多次,也仅针对 content_type 1 重复)。

对此有什么方法?请记住,我无法操纵数组来执行诸如将这些内容嵌套在对象中之类的操作。

最佳答案

如果我正确理解了您的方法,那么这应该可以正常工作。 http://codepen.io/anon/pen/zrMEjz - 工作示例

代码如下。逻辑是,在每次迭代中,它将检查元素是否存在,然后将新元素插入其中,如果不存在,则创建该元素并在其中添加元素。 (注意:jQuery 作为一个库包含在内,您可以使用基本 JS,但我想用更少的代码向您展示这个想法)

// sample array 
var arr = [
{content_type: 1, content_body: "some text"},
{content_type: 1, content_body: "some text"},
{content_type: 2, content_body: "media link"},
{content_type: 1, content_body: "some text"}
];

for(var i = 0; i < arr.length; i++) {
var currentElement = arr[i]; console.log(currentElement.content_body);

switch(currentElement.content_type) {
case 1:
var el = jQuery('.text_content');

if(el.length) {
el.append('<p>' + currentElement.content_body + '</p>');
} else {
var el = jQuery('<div class="text_content"></div>')
el.append('<p>' + currentElement.content_body + '</p>');
jQuery('body').append(el);
}
break;
case 2:
var el = jQuery('.text_media');

if(el.length) {
el.append('<div>' + currentElement.content_body + '</div>');
} else {
var el = jQuery('<div class="text_media"></div>');
el.append('<p>' + currentElement.content_body + '</p>');
jQuery('body').append(el);
}
break;
}
}
.text_content {
border: 1px solid black;
}

.text_content p {
border: 1px solid yellowgreen;
}

.text_media {
border: 1px solid blue;
}
<html>
<body>

</body>
</html>

希望对您有所帮助,如果需要调整请告诉我。干杯。

关于javascript - 仅当项目类型更改时才返回结果的 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com