连接jade中数组对象的内容得到一个字符串

Concatenate contents of array object in jade to get a string

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

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.

如何实现?

遗憾的是我没有早点弄清楚这一点。

- 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" 语句之前输入了“-”,导致代码无法运行。

您可以将数组 .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 iterates over every item in an array and lets you return a new value for that position in a new array that .map returns. Then Array.join 完全符合您的要求,返回数组中所有项目的串联字符串。

我们使用 .map 创建一个新数组,其中只有标签名称字符串。然后使用 .join 我们将它们全部连接成一个以逗号分隔的大字符串。

如果你这样做会怎样:

- var desc_tags = tags.map(function(e) {return e.Tag.tag_name}).join(', ');