当前位置: 首页 > 知识库问答 >
问题:

如何使用扩散算子从对象阵列中删除重复项

那开济
2023-03-14

我有以下id为唯一键的对象数组”:

var test = [
  {id: 1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: ""},
  {id: 2, PlaceRef: "*00022", Component: "BAXI10R", SubLocCode: "KIT", BarCode:""},
  {id: 1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: ""},
  {id: 3, PlaceRef: "*00011", Component: "ANR190", SubLocCode: "B1", BarCode: ""}
]

由此我想使用扩展运算符检索唯一对象,我尝试使用以下代码:

const uniKeys = [...(new Set(test.map(({ id }) => id)))];

我只能检索id,如何使用扩散算子检索唯一对象。此外,任何新的ES6功能实现都会有所帮助。

共有3个答案

闾丘朗
2023-03-14

您可以按id创建地图,然后提取值<代码>[…新地图(测试地图(项目=

var test = [{id:1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: ""},
{id:2, PlaceRef: "*00022", Component: "BAXI10R", SubLocCode: "KIT", BarCode:""},
{id:1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: ""},
{id:3, PlaceRef: "*00011", Component: "ANR190", SubLocCode: "B1", BarCode: ""}]

console.log([
  ...new Map(test.map(item => [item.id, item])).values()
])
许博易
2023-03-14

您可以使用集合并按未知id进行过滤。

js prettyprint-override">var test = [{ id: 1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: "" }, { id: 2, PlaceRef: "*00022", Component: "BAXI10R", SubLocCode: "KIT", BarCode: "" }, { id: 1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: "" }, { id: 3, PlaceRef: "*00011", Component: "ANR190", SubLocCode: "B1", BarCode: "" }],
    unique = test.filter((s => ({ id }) => !s.has(id) && s.add(id))(new Set));
    
console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }
微生毅
2023-03-14

您可以使用find方法将对象映射回对象数组,这将返回第一个具有该id的对象。

var test = [{id:1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: ""},{id:2, PlaceRef: "*00022", Component: "BAXI10R", SubLocCode: "KIT", BarCode:""},{id:1, PlaceRef: "*00011", Component: "BATH", SubLocCode: "BAT", BarCode: ""},{id:3, PlaceRef: "*00011", Component: "ANR190", SubLocCode: "B1", BarCode: ""}]
var uniq = [...new Set(test.map(({id}) => id))].map(e => test.find(({id}) => id == e));	
console.log(uniq)
 类似资料:
  • 我的数据如下所示: 其中,foo\u list是一个名为Bar的模型中的字段。请注意,阵列中的第一个和第二个对象是完全重复的。 除了切换到PostgresSQL这一显而易见的解决方案之外,我还可以运行什么MongoDB查询来删除foo\u列表中的重复条目? 类似的答案并不能完全解决这个问题: https://stackoverflow.com/a/16907596/432 https://stac

  • 问题内容: 假设我们有一个具有这种格式的对象: 我想做一个通过键删除的函数: 问题答案: 该运算符允许您从对象中删除属性。 以下示例都做同样的事情。

  • 问题内容: 我有一个对象列表,并且有一个充满记录的数据库表。我的对象列表具有标题属性,我想从列表中删除所有具有重复标题的对象(保留原始对象)。 然后,我要检查我的对象列表是否在数据库中有任何记录的重复项,如果是,请在将它们添加到数据库之前从列表中删除这些项目。 我已经看到了从这样的列表中删除重复项的解决方案:,但是我不确定如何使用对象列表来做到这一点? 我也需要维护对象列表的顺序。我也在想,也许我

  • 我有一份名单。列表中有列表。< code>[[-1,0,1],[-1,2,-1],[0,1,-1]],此列表的名称表示结果。结果列表包含作为列表重复元素。< code>[-1,0,1]和< code>[0,1,-1]是一样的。我想列一个没有重复的清单。所以列表结果变成< code>[[-1,0,1],[-1,2,-1]]或< code>[[-1,2,-1],[0,1,-1]]。 我读到Hashma

  • 我有一个具有和属性的对象数组: 我想从所有对象中删除属性,并在控制台中打印,如

  • 问题内容: 我想从列表中删除重复项,但我无法正常工作: 问题答案: 如果该代码不起作用,则可能是你未在该类上正确实现。 大概有一些钥匙(我们称之为)可以唯一地标识一个客户。例如 的适当定义equals(Object)如下所示: 为了完整起见,你还应该实现hashCode两个Customer相等的对象将返回相同的哈希值。hashCode上述定义的匹配项为equals: 还值得注意的是,如果列表很大,