当两个值相同时从数组中删除重复项

克鲁扎

我的重复 json 数组如下所示:

var list = [
  {"id":"123","class": "Math K", "subject": "Counting & Cardinality"},
  {"id":"124","class": "Math K", "subject": "Counting & Cardinality"},
  {"id":"125","class": "Math K", "subject": "Counting & Cardinality"},
  {"id":"126","class": "Math K", "subject": "Counting & Cardinality"},
  {"id":"127","class": "Math K", "subject": "Geometry"},
  {"id":"128","class": "Math 1", "subject": "Counting & Cardinality"},
  {"id":"129","class": "Math 1", "subject": "Counting & Cardinality"},
  {"id":"120","class": "Math 1", "subject": "Orders of Operation"},
  {"id":"121","class": "Math 2", "subject": "Geometry"},
  {"id":"122","class": "Math 2", "subject": "Geometry"}
];

我需要删除具有相同类和主题的重复项(例如 Math K 和 Counting & Cardinality 或 Math 2 和 Geometry),但保留第一条记录的 ID,因此它应该如下所示:

var newList = [
  {"id":"123","class": "Math K", "subject": "Counting & Cardinality"},
  {"id":"127","class": "Math K", "subject": "Geometry"},
  {"id":"128","class": "Math 1", "subject": "Counting & Cardinality"},
  {"id":"120","class": "Math 1", "subject": "Orders of Operation"},
  {"id":"121","class": "Math 2", "subject": "Geometry"},
];

我试过这个代码:

var newList = [];
for( var class in list ) {
  for( var subject in list[class] ) {
      outputList.push({ id: id, class: class, subject: subject });
  }
}
JSON.stringify( newList, null, 4 );

但它并没有带来结果。我非常感谢您帮助调整我的代码。谢谢你。

伊赫维杰斯

另一种方法是使用reduce() 删除重复项。

list.reduce()收益与密钥的对象${b.class}_${b.subject},并与价值观object的样子如下:

{
  "Math K_Counting & Cardinality": {
    "id": "123",
    "class": "Math K",
    "subject": "Counting & Cardinality"
  },
  "Math K_Geometry": { "id": "127", "class": "Math K", "subject": "Geometry" },
  "Math 1_Counting & Cardinality": {
    "id": "128",
    "class": "Math 1",
    "subject": "Counting & Cardinality"
  },
  "Math 1_Orders of Operation": {
    "id": "120",
    "class": "Math 1",
    "subject": "Orders of Operation"
  },
  "Math 2_Geometry": { "id": "121", "class": "Math 2", "subject": "Geometry" }
}

然后提取 的值list.reduce()以得到结果Object.values()

const list = [
  { id: "123", class: "Math K", subject: "Counting & Cardinality" },
  { id: "124", class: "Math K", subject: "Counting & Cardinality" },
  { id: "125", class: "Math K", subject: "Counting & Cardinality" },
  { id: "126", class: "Math K", subject: "Counting & Cardinality" },
  { id: "127", class: "Math K", subject: "Geometry" },
  { id: "128", class: "Math 1", subject: "Counting & Cardinality" },
  { id: "129", class: "Math 1", subject: "Counting & Cardinality" },
  { id: "120", class: "Math 1", subject: "Orders of Operation" },
  { id: "121", class: "Math 2", subject: "Geometry" },
  { id: "122", class: "Math 2", subject: "Geometry" },
];

const output = Object.values(
  list.reduce((acc, b) => {
    if (!acc[`${b.class}_${b.subject}`]) acc[`${b.class}_${b.subject}`] = b;
    return acc;
  }, {})
);

console.log(output);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除对象数组中的两个重复值

合并两个列表,同时删除重复项

删除重复项(两个值)-ArrayList中的重复值

当两个值的值不同时如何从数组中删除数组值

如何为两个几乎相同的应用程序删除 IoC 容器中的重复项?

根据值过滤两个数组以删除重复项

当两个键的值相同时,从python字典中删除一个项目

比较两个Javascript数组并删除重复项

合并两个numpy数组并删除重复项?

合并两个值并删除重复项

从PHP中的两个数组中删除重复项

合并两个排序的数组时,使用Java中的集合删除重复项

使用Javascript从两个对象数组中删除重复项

比较两个对象数组,并删除第二个对象数组中具有相同属性值的项

如何在从python中的动态输入中删除重复项的同时组合两个列表

删除两个ggplot图例中的重复项

删除多个列表python中的两个重复项

删除两个向量中的重复项

合并两个列表并删除重复项,而不删除原始列表中的重复项

比较两个具有对象的数组,并从第一个数组中删除重复项

从列表中删除重复项但不在 SWI-Prolog 中返回两个相同的结果?

合并两个列表,同时保持顺序并删除重复项

如何在删除重复项的同时合并具有不同列号的两个表?

有没有办法从两个不同的数组中删除相同的值?

如何删除两个数组中的重复值?

同时翻转Numpy数组中的两个值

.splice() 从两个数组中删除项目 - 从数组中删除重复项

Swift-合并两个数组,同时删除重复的键并将数组值相加

从两个numpy数组中删除重复的元素