检查重复的嵌套数组

时间:2016-08-02 11:52:49

标签: javascript jquery arrays

我有一个数组,每次用户点击按钮时都会填充信息。推送到此数组的信息本身就在数组中。所以有类似的东西:

var parentArray = [];
var childArray = ["Info1", "Info2", 500];

$("#button").on("click", function(){
    parentArray.push(childArray);
})

每次用户点击按钮时,childArray将根据不同的用户输入提供不同的信息。例如,用户点击地图上的一个点,childArray会将某些信息输入其中。用户点击地图上的其他点,childArray会将某些信息输入其中。每次childArray不同或相同。然后,用户点击该按钮,childArray中的信息将被推送到parentArray

我的问题是,我希望摆脱childArrays中的重复parentArray。所以,假设一个childArray看起来像这样:

["Info1", "Info2", 25]

另一个子数组如下所示: ["Info1", "Info2", 50]

另一个看起来像这样: ["Info1", "Info2", 25]

我想找出两个childArrays是否相同,第一个和第三个数组,如果是,则删除除了一个相似的数组之外的所有数组,而不是看起来像这样:

[["Info1", "Info2", 25], ["Info1", "Info2", 50], ["Info1", "Info2", 25]]

我的parentArray看起来像这样:

[["Info1", "Info2", 25], ["Info1", "Info2", 50]]

有可能实现这一目标吗?如果是这样,我将如何去做呢?

我希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

您可以使用filter()thisArg参数

var ar = [["Info1", "Info2", 25], ["Info1", "Info2", 50], ["Info1", "Info2", 25]];
var result = ar.filter(function(e) {
  if(!this[e.join('|')]) {
    this[e.join('|')] = true;
    return e;
  }
}, {});

console.log(result);