创建一组javascript

PMO1948

我有一组需要过滤掉重复项的数组。它需要以这样一种方式工作:每个数组中没有重复项,并且在总组中,没有两个数组具有相同的值。

第一部分很简单-对于每个内部数组,我都可以应用Set到该数组并将其过滤掉。因此,给定矩阵,arrays我可以将以下内容应用于过滤器:

const sets : string[][] = arrays.map(arr=>[...new Set(arr)].sort());

这将给我一组数组。如何将其分成一组?如,如果sets=[[a, b],[c],[d, a],[c],[e]]我想setOfSets等于[[a, b],[c],[d, a],[e]]

应用setOfSets = [...new Set(sets)];将不起作用,因为相等的数组在地址不同的情况下默认情况下不视为相等。有没有一种方法可以强制set按值检查,或者有另一种有效的方法可以产生这种影响?

编辑

原始矩阵:

[[a, b, b],
[c,c],
[b,a],
[d,a],
[c,c],
[e,e]]

创建和排序集后:

[[a,b],
[c],
[a,b],
[d,a],
[c],
[e]]

预期结果:

[[a,b],
[c],
[d,a],
[e]]
用户名

如果您集合中的数据易于序列化,那么我会选择这样的解决方案:

const data = [
  ["a", "b", "b"],
  ["c","c"],
  ["b","a"],
  ["d","a"],
  ["c","c"],
  ["e","e"]
];

// Create the "hash" of your set
const serializeSet = s => Array
  .from(s)
  .sort()
  .join("___");

// Create a map (or object) that ensures 1 entry per hash
const outputMap = data
  .map(xs => new Set(xs))
  .reduce(
    (acc, s) => acc.set(serializeSet(s), s),
    new Map()
  );

// Turn your Map and Sets back in to arrays
const output = Array
  .from(outputMap.values())
  .map(s => Array.from(s));
  
console.log(output);

要为您的集合提供良好的哈希函数,您需要对数据进行良好的外观。例如:

  • 当数组由az的单个字符组成时,就像上面的示例一样,我们可以sort使用默认的排序器对这些字符串进行排序,然后使用az范围之外的字符join对结果进行排序
  • 如果您的数组由随机字符串或数字组成,JSON.stringify(Array.from(s).sort())则使用起来更安全
  • 当数组由普通对象组成时,可以JSON.stringify对其进行排序,但是要注意对象属性顺序的差异!(例如{a: 1, b: 2}vs {b: 2, a: 1}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建一组UIButtons?

来自分类Dev

创建一组UIButton?

来自分类Dev

在一组数组中创建范围

来自分类Dev

动态创建一组SQLAlchemy表

来自分类Dev

创建一组Python类

来自分类Dev

为数组创建一组键

来自分类Dev

在Rails中创建一组行

来自分类Dev

创建一组Python函数

来自分类Dev

创建一组Python类

来自分类Dev

如何创建一组相关的属性?

来自分类Dev

如何使用用户定义的相等函数在Javascript中创建一组用户定义的对象?

来自分类Dev

创建一列以枚举一组事件

来自分类Dev

通过一组键创建地图

来自分类Dev

如何从R中的向量创建一组范围?

来自分类Dev

在mysql中为一组行创建视图

来自分类Dev

使用vtk给定一组点创建多条折线

来自分类Dev

在mysql中为一组行创建视图

来自分类Dev

从一组矩形中创建矩形的连续矩阵

来自分类Dev

尝试从一组图像创建GIF

来自分类Dev

C#如何创建一组集合

来自分类Dev

如何在python中创建并保留一组变量?

来自分类Dev

JS从一组URL创建树

来自分类Dev

Pyspark:在groupby中创建一组值的新列

来自分类Dev

熊猫,如何从一组行创建层次索引

来自分类Dev

使用其他字体的一组字符创建ttf

来自分类Dev

使用其他字体的一组字符创建ttf

来自分类Dev

从一组<select>创建值数组

来自分类Dev

从一组图像创建视频Android

来自分类Dev

从上下文创建一组单选按钮