Вы добавляете элементы в массив tempIndex
до , когда вы проверяете, есть ли они там. Поскольку вы всегда добавляете каждый из них, подразумевается, что когда вы делаете проверку, элемент уже будет там.
Вы должны инвертировать это - проверить, существует ли элемент , а затем добавить его в tempIndex
var data = [
{id: "id_one", value: "value_one", label: "ABC"},
{id: "id_one", value: "value_one", label: "ABC"},
{id: "id_three", value: "value_three", label: "ABX"},
{id: "id_two", value: "value_two", label: "ABY"},
{id: "id_four", value: "value_four", label: "ABD"}
];
function getDistValues(object) {
var distObject = [];
var tempIndex = [];
var length = object.length;
for (var i = 0; i < length; i++) {
//check first
var notSeen = tempIndex.indexOf(object[i].id) === -1;
if (notSeen) {
tempIndex.push(object[i].id);
//add later
distObject.push(object[i]);
}
}
return distObject;
}
var result = getDistValues(data);
console.log(result);
Чтобы быть более эффективным, вы также можете использовать объект для хранения повторяющихся идентификаторов, что избавит от необходимости повторения над tempIndex
каждые l * 1024. *:
var data = [
{id: "id_one", value: "value_one", label: "ABC"},
{id: "id_one", value: "value_one", label: "ABC"},
{id: "id_three", value: "value_three", label: "ABX"},
{id: "id_two", value: "value_two", label: "ABY"},
{id: "id_four", value: "value_four", label: "ABD"}
];
function getDistValues(object) {
var distObject = [];
//use object
var tempIndex = {};
var length = object.length;
for (var i = 0; i < length; i++) {
var notSeen = tempIndex[object[i].id] !== true;
if (notSeen) {
//mark as visited
tempIndex[object[i].id] = true;
distObject.push(object[i]);
}
}
return distObject;
}
var result = getDistValues(data);
console.log(result);