Javascript数组显示两次

时间:2018-12-13 09:42:24

标签: javascript arrays

我正在尝试显示从复选框中选择的过滤器。首先,我要创建一个从复选框中选择的值数组,然后尝试附加到字符串

例如,我有两个标记为label1label2的复选框,我建立了数组['label1','label2']

期望的结果将是“ Filtered by: Label1, Label2”,但我得到了Filtered by: Label1,Label2, Label1,Label2

我想这是我尝试构建字符串的for循环中的东西,因为数组看起来不错

let topLabel = jQuery('.industry-filter').data('selected-text') + ' ';
let termsName= ['Industry', 'Category']
if(termsName.length){
  for(var j = 0; j < termsName.length; j++){
    if(j == termsName.length - 1){
      topLabel += termsName;
    }else{
      topLabel += termsName+', ';
    }
  }
}else{
  topLabel = jQuery('.industry-filter').data('text');
}

$('.industry-filter').text(topLabel);

这是一支显示问题的笔:https://codepen.io/anon/pen/pqjYxL

2 个答案:

答案 0 :(得分:1)

您需要按索引访问。

在不使用索引的情况下,您将分配完整的数组。

let topLabel = jQuery('.industry-filter').data('selected-text') + ' ';
let termsName= ['Industry', 'Category']
if(termsName.length){
  for(var j = 0; j < termsName.length; j++){
    if(j == termsName.length - 1){
      topLabel += termsName[j];
                           ^^^
    }else{
      topLabel += termsName[j] +', ';
                           ^^^
    }
  }
}else{
  topLabel = jQuery('.industry-filter').data('text');
}

$('.industry-filter').text(topLabel);

答案 1 :(得分:0)

您应该通过其 index 访问一个元素。

if(j == termsName.length - 1){
  topLabel += termsName[j];
}else{
  topLabel += termsName[j]+', ';
}

您的解决方案的一个简短版本可以使用join方法。

if(termsName.length){
   topLabel += termsName.join(',')
}