在jade中连接数组对象的内容以获取字符串

时间:2015-04-22 10:48:44

标签: node.js concatenation pug

我有一个对象,如果我想要一个列表,我可以从中提取值:

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。

我如何实现这一目标?

3 个答案:

答案 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(', ');