gpt4 book ai didi

Javascript:使用单个属性删除对象数组中的重复项

转载 作者:行者123 更新时间:2023-11-30 23:56:29 25 4
gpt4 key购买 nike

我有这样的对象,其中“id”是唯一的。我需要从低于 ES5 的任何版本的 javascript 中的对象数组中删除重复项。我需要根据 id 字段进行比较并删除其重复项。

示例:

Object = [
{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}
];

输出:

result = [
{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++) {
tempIndex.push(object[i].id);

if (tempIndex.indexOf(object[i].id) === -1 || i === 0) {
distObject.push(object[i]);
}
}

return distObject;
}

它只给出第一个对象。我尝试过映射 id 并进行比较,但没有成功。

任何帮助都会对我有用。

最佳答案

这是因为你总是将id添加到tempIndex数组中,所以它总是认为当前的id是重复的。尝试:

function getDistValues(object) {
var distObject = [];
var tempIndex = [];
var length = object.length;

for (var i = 0; i < length; i++) {
if (tempIndex.indexOf(object[i].id) === -1 || i === 0) {
tempIndex.push(object[i].id);
distObject.push(object[i]);
}
}

return distObject;
}

关于Javascript:使用单个属性删除对象数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61016338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com