我有一个对象,如果我想要一个列表,我可以从中提取值:
each gear_tag in store.GearTags
li #{gear_tag.Tag.tag_name}
现在我想将所有 tag_name 连接到',' 之间。我的意思是我希望结果字符串是这样的:
" tag_name_1, tag_name_2, tag_name_3, tag_name_4
"如果对象有4个gear_tags。
我如何实现这一目标?
答案 0 :(得分:2)
您可以将数组.map
方法与.join
方法结合使用。
var tagString = store.GearTags.map(function (gear_tag) {
return gear_tag.Tag.tag_name;
}).join(', ');
假设:
store.GearTags = [
{Tag: {tag_name: 'tag_name_1'}},
{Tag: {tag_name: 'tag_name_2'}},
{Tag: {tag_name: 'tag_name_3'}}
];
上述逻辑会产生:
"tag_name_1, tag_name_2, tag_name_3"
Array.map遍历数组中的每个项目,并允许您在.map
返回的新数组中返回该位置的新值。然后Array.join完全按照你的意愿行事,返回数组中所有项目的连接字符串。
使用.map
,我们创建一个新数组,其中只包含标记名称字符串。然后使用.join
我们将它们连接成一个以逗号分隔的大字符串。
答案 1 :(得分:1)
很遗憾,我之前没有想到这一点。
- var desc_tags = ''
each gear_tag, i in store.GearTags
- if(i == retailer.GearTags.length - 1)
- desc_tags = desc_tags + gear_tag.Tag.tag_name
- else
- desc_tags = desc_tags + gear_tag.Tag.tag_name + ", "
我在“each”语句之前键入了“ - ”,这导致代码无效。
答案 2 :(得分:0)
如果你这样做:
- var desc_tags = tags.map(function(e) {return e.Tag.tag_name}).join(', ');