Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   убрать дубли из массива. (https://javascript.ru/forum/dom-window/72226-ubrat-dubli-iz-massiva.html)

ninzzo 16.01.2018 20:41

убрать дубли из массива.
 
Как убрать дубли?

var array = [
{gID: "11", val: "-200"},
{gID: "22", val: "-200"},
{gID: "11", val: "-200"},
{gID: "22", val: "-200"},
{gID: "33", val: "-200"},
{gID: "22", val: "-200"},
{gID: "66", val: "-200"}
];


на выходе должно быть:

var array = [
{gID: "11", val: "-200"},
{gID: "22", val: "-200"},
{gID: "33", val: "-200"},
{gID: "66", val: "-200"},
];


Какой самый оптимальный способ ?
Я написал функцию на 4 строки но она вроде не очень.

j0hnik 16.01.2018 23:14

http://javascript.ru/forum/misc/2842...u-klyuchu.html

Aetae 16.01.2018 23:52

Универсальное решение сложное и парой строк там не отделаешься, а если под конкретный случай то примерно так:
Array.prototype.unique = function( comparator ) {	
	if(typeof comparator !== 'function') 
		comparator = function(first, second){return first === second};	
	var i = this.length, j;

	while(i--) for(j = i; j--;)
		if(comparator(this[i], this[j]))
			this.splice(j, 1);

	return this;
}


var array = [
	{gID: "11", val: "-200"},
	{gID: "22", val: "-200"},
	{gID: "11", val: "-200"},
	{gID: "22", val: "-200"},
	{gID: "33", val: "-200"},
	{gID: "22", val: "-200"},
	{gID: "66", val: "-200"}
];

array.unique(function(first, second){
	return first.gID === second.gID && first.val === second.val 
});

alert(JSON.stringify(array, 0, '\t'))


Часовой пояс GMT +3, время: 22:55.