如何在for循环javascript中合并重复值

时间:2016-11-02 09:02:50

标签: javascript

我是js的新手,我不太了解js中的代码和条件。 我的问题很简单,但我需要有人给我一个很好的例子,如果可能的话,因为我知道我需要什么但是在代码中很难实现它。

这是我的代码,包含数据来自的2个数组。

blind_tmp = ''; 
for (i=0; i<@All of Blind Relationship Link.length; i++){    
    blind_tmp = blind_tmp + '<p>[**' + @All of Element Title[i] + '**](' + @All of Blind Relationship Link[i] + ')'    
};

需要什么简单的东西。我想要打印重复的合并记录。

例如:如果盲人关系链接是AF44,并且在6个元素后面再次出现AF44,那么我希望两者都像1.AF44,2.AF44一样写 现在它正在编写元素如何出现

示例:

AF11,AF22,AF33,AF44,AF55,AF66,AF77,AF44

所以在这个例子中你看到两个AF44 我希望他们像这样写成

AF11,AF22,AF33,AF44AF44,AF55,AF66,AF77

感谢代码示例的任何帮助。

2 个答案:

答案 0 :(得分:1)

我们的想法是遍历blindRelationshipLink中的每个元素,并将这些元素存储在一个临时数组中,该数组将用于检查数组元素的出现次数。

var blindRelationshipLink = ['AF11','AF22','AF33','AF11','AF44','AF44','AF55','AF66','AF77','AF11','AF22','AF11'];
var arrTemp = [];
var p = '';
blindRelationshipLink.forEach(function(arr){
var count = 0;    
arrTemp.forEach(function(a){
if(arr === a)
  count++;
  
});
arrTemp.push(arr);
if(count){
  count++;
  arr= arr + '.' + count;
}
p = p + arr + ',';  
});
alert(p);
您可以通过运行代码段进行测试。

答案 1 :(得分:0)

这种做法并不是最好的,但可能符合您的目的。

这是一个片段

var elemArray = ['AF11', 'AF22', 'AF33', 'AF44', 'AF55', 'AF66', 'AF77', 'AF44']; // Array of elements


//A new array which which will contain elements which pass our case    
    var finalArray = [];
    elemArray.forEach(function(item) { // loop through main array
      // Check if element is present or else push the element
      if (finalArray.indexOf(item) == -1) {
        finalArray.push(item);
      } else {
        // if element is there find the index
        var getIndex = finalArray.indexOf(item);
        // remove the element, else there will be duplicate
        finalArray.splice(getIndex, 1);
        //concate the matched element
        var newElem = item + item;
        // push the element in specfic index
        finalArray[getIndex] = newElem;
      }
    })
    console.log(finalArray)

此代码的当前缺点是,如果主阵列中存在多个重复项,将会发生什么。例如,AF33的存在超过两次。

DEMO