0

But I want to leave last two duplicated value in array just like

arr = [1,2,3,4,4,4,4,4,5,6,6,6]

and the result will be

result = [1,2,3,4,4,5,6,6]

The reason why I want to leave last two is I have 2 arrays like date and data and it must match with each other.

Thank you.

Dan
  • 35
  • 4

4 Answers4

0

Using jquery you can use:

var newarr=[];
$.each(arr, function(i, e) {
 if ($.inArray(e, newarr) == -1) newarr.push(e);
});
console.log(newarr)
Milind Anantwar
  • 81,290
  • 25
  • 94
  • 125
0

Try this:

var arr = [1,2,3,4,4,4,4,4,5,6,6,6],
    result = [],
    fisrtOccurence = -1;

for(var i=0; i<arr.length; i++) {
    fisrtOccurence = result.indexOf(arr[i]);
    if(fisrtOccurence === -1) {
        result.push(arr[i]);
    } else {
        if(result.indexOf(arr[i],fisrtOccurence+1) === -1) {
            result.push(arr[i]);
        }
    }
}

console.log(result);
vifito
  • 177
  • 4
0

Try this solution : JSFiddle

     var arr = [1,2,3,4,4,4,4,4,5,6,6,6]

   // using reduce function of array
    Array.prototype.unique = function() {
        return this.reduce(function(previousValue, current) {
            if (previousValue.indexOf(current) < 0) {
                previousValue.push(current);
            }
            return previousValue;
        }, []);
    }

    console.log(arr.unique());

    // using filter
    var filteredArray= arr.filter(function(element, index, self) {
        return index == self.indexOf(element);
    });

    console.log(filteredArray);
111
  • 1,779
  • 1
  • 12
  • 15
0

Demo

Try this

newarr = [];
testarr = [];
duplicatearr = [];
locArray = [1,2,3,4,4,4,4,4,5,6,6,6];
for (var i = 0; i<locArray.length;i++)
{
var idx = $.inArray(locArray[i], testarr);
if (idx == -1) {
  testarr.push(locArray[i]);
  newarr.push(locArray[i]);
}
    else
    {  
        var id = $.inArray(locArray[i], duplicatearr);
        if (id == -1) {
        newarr.push(locArray[i]);
        duplicatearr.push(locArray[i]);
        }

    }


}
console.log(newarr);