使用过滤器JavaScript在数组内部的数组中获取唯一值的最佳方法



I在数组内部使用数组,如下例左边的元素是用户Id,右边的元素是时间戳值

[[2222,2344556], [1111,2344546], [1111,2345556], [1111,2347556]]

我正在尝试以下操作:

  1. 用超过60秒的时间过滤用户,为此,我使用了此代码,它运行良好

    recived_msg_user.filter(([user, date]) => Math.abs(date - nowTimeStamp) < 60000 
    
  2. 现在,我正在尝试添加一个过滤器,用于显示最近时间戳为的唯一性用户

    [[2222,2344556], [1111,2347556]]
    

如何做到这一点?是否有在同一个过滤器中执行此操作的选项?

以下是一些带有排除的低级别冒泡。应该足够快。

function filter(array) {
let filtered = [];
let checkedIndexes = [];
for (let i = 0; i < array.length; i++) {
if (!(Math.abs(item[1] - nowTimeStamp) < 60000) ||
checkedIndexes.includes(i)) continue;
let index = i;
let time = array[i][1];
for (let j = i + 1; j < array.length; j++) {
if (array[j][0] == array[i][0]) {
checkedIndexes.push(j);
if (array[j][1] > time) {
index = j;
time = array[j][1];
}
}
}
filtered.push(array[index]);
}
return filtered;
}

就在同一个过滤器中而言,我不确定是否有这样的选项。但是,在另一行中,您可以使用sort的数组方法,然后按最低时间戳进行排序。这是代码

yourArray.sort((a, b) => a[1] - b[1]);

应该更改数组,以便按最低时间戳到最大时间戳对所有内容进行排序。我希望这能有所帮助。

最新更新