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

如果属性值匹配,则从数组中删除对象

皮景龙
2023-03-14

我有一组对象,看起来像:

{
  "brandid": id,
  "brand": string,
  "id": id,
  "categoryId": id,
  "category": string,
  "factory": string,
  "series": string,
  "status": 0,
  "subStatus": 1
}

如果系列属性值与数组中其他对象中的另一个系列属性值匹配,则需要从数组中删除该对象

目前,我尝试使用以下方法将其推送到重复阵列:

      const seriesResCopy = seriesRes;
      const dupArray = []
      for (const thing of seriesResCopy) {
        for (const item of seriesRes) {
          if (thing.series === item.series) {
            dupArray.push(item);
          }
        }
      }

但这不起作用。从例子来看,我的问题是我没有一个确定的重复值列表来寻找。

任何帮助都将不胜感激。

共有2个答案

牛经赋
2023-03-14

要从数组中过滤重复项并保留第一个实例:

let seriesWithoutDuplicates = seriesRes.filter((s, i, self) => {
    return self.findIndex(z => z.series === s.series) === i;
});
邴子实
2023-03-14

您可以使用一组系列来过滤掉重复项:

const exists = new Set();
seriesRes = seriesRes.filter(({series}) => !exists.has(series) && exists.add(series));

这使用:数组。原型过滤、对象分解和一些逻辑技巧。

同样可以通过改变数组来完成:

const exists = new Set();
for(const [index, {series}] of seriesRes.entries()) {
  if(!exists.has(series) {
    exists.add(series);
  } else {
    seriesRes.splice(index, 1);
  }
}

 类似资料:
  • 问题内容: 我有一个这样的对象数组: 我知道我可以找到匹配的项目,如下所示: 但是现在如何将其从原始文件中删除?我希望可以以某种方式返回索引,以便可以使用。或者更好的是,我想做这样的事情: 有任何想法吗? 问题答案: 您不了解的是Array是一个结构,因此 是一个值类型 。它不能像类实例那样在适当位置进行突变。因此,即使您扩展Array来编写一个变异方法,您也将始终在幕后创建一个新的数组。 因此,

  • } 现在,我的要求是当我单击“删除列”时,它会进入此方法,并且我想删除与之关联的特定列和行。 提前谢谢你的帮助。

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

  • 我正在尝试从对象数组中删除属性。 我希望var2包含这样的内容。 是否有方法将/cast转换为上述内容?换句话说,我想从对象数组中删除,并将其分配给。我该怎么做?

  • 问题内容: 如何通过匹配对象属性从数组中删除对象? 请只使用本机JavaScript。 我在使用接头时遇到麻烦,因为每次删除的长度都会减少。使用克隆并在原始索引上进行拼接仍然会给您带来长度减少的问题。 问题答案: 我以为你用过这样的东西? 修复bug所需要做的就是在下一次减少,然后(也可以选择向后循环): 为了避免线性时间删除,可以编写要 保留 在数组上的数组元素: 为了避免在现代运行时中进行线性

  • 问题内容: 我有一个要在Python中清理的JSON数组。我要删除该属性: data.json 我正在设置列表理解以删除该属性,但是我不确定如何创建关注以下内容的变量: 当我理解列表时,它返回一个空数组。我必须纠正什么才能使其正常工作? 问题答案: 解决您的问题的一种简单方法是使用以下方法删除不需要的密钥: 您应该添加一些安全检查,但是您知道了。