代码之家  ›  专栏  ›  技术社区  ›  Michael

如何从数组中删除重复的点?

  •  0
  • Michael  · 技术社区  · 6 年前

    我有这个点数组:

    0:Point {X: 181708.79357001217, Y: 659243.26713151, rotate: ƒ, move: ƒ, resize: ƒ, …}
    1:Point {X: 182534.29357001217, Y: 657010.1837981766, rotate: ƒ, move: ƒ, resize: ƒ, …}
    2:Point {X: 186545.37690334552, Y: 660957.76713151, rotate: ƒ, move: ƒ, resize: ƒ, …}
    3:Point {X: 181708.79357001217, Y: 659243.26713151,rotate: ƒ, move: ƒ, resize: ƒ, …}
    

    我需要删除具有相同坐标的点。

    例如,索引为0和3的点具有相同的坐标。所以在我移除它之后,它期望得到这个数组:

    0:Point {X: 181708.79357001217, Y: 659243.26713151, rotate: ƒ, move: ƒ, resize: ƒ, …}
    1:Point {X: 182534.29357001217, Y: 657010.1837981766, rotate: ƒ, move: ƒ, resize: ƒ, …}
    2:Point {X: 186545.37690334552, Y: 660957.76713151, rotate: ƒ, move: ƒ, resize: ƒ, …}
    

    所以我的问题是,我如何才能从Aary中删除重复的点,只使用javascript?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Isaac    6 年前
    let array = [
      {X: 181708.79357001217, Y: 659243.26713151},
      {X: 182534.29357001217, Y: 657010.1837981766},
      {X: 186545.37690334552, Y: 660957.76713151},
      {X: 181708.79357001217, Y: 659243.26713151}
    ]
    
    let answer = [];
    
    array.forEach(arr=> {
        if(!answer.some(an => JSON.stringify(an) === JSON.stringify(arr))){
        answer.push(arr);
      }
    });
    

    上面的代码将在数组中循环,检查 answer ,如果唯一,则将其推入 回答