在单对象javascript中减去相同的变量



const token = [
{"token":"d2r4Z62OTGiPyNmdHTUfny",
"time":1652767811},
{"token":"dnl13twkQIqifdvaxp1t6e",
"time":1652767811},
{"token":"eDZxQu0FSWm72D2-T1md5X",
"time":1652767811},
{"token":"dnl13twkQIqifdvaxp1t6e",
"time":1652767811}]; // Try edit me
const arr = [];
for (var i=0; i<=token.length-1; i++)
{
const millis = Date.now();
const time  = Math.floor(millis / 1000);
if (token[i].time > time) {
arr.push(token[i].token)
}
}
console.log(arr);

这两个令牌变量之间的是相同的,我想把它们区分开来,我怎么做呢?示例输出:

const example = [
"d2r4Z62OTGiPyNmdHTUfny",
"eDZxQu0FSWm72D2-T1md5X",
"dnl13twkQIqifdvaxp1t6e"
];
console.log(example);

只使用Set,因为它不允许重复:

const tokens = [
{"token":"d2r4Z62OTGiPyNmdHTUfny", "time":1652767811},
{"token":"dnl13twkQIqifdvaxp1t6e", "time":1652767811},
{"token":"eDZxQu0FSWm72D2-T1md5X", "time":1652767811},
{"token":"dnl13twkQIqifdvaxp1t6e", "time":1652767811}
];
const now = Math.floor(Date.now() / 1000);
const result = new Set(
tokens.filter(({ time }) => time > now).map(({ token }) => token)
);
console.log(...result);

当前逻辑最简单的方法是您可以使用includes来检查tokenarr的结果。如果它在arr中,我们不需要将它压入arr

const token = [
{"token":"d2r4Z62OTGiPyNmdHTUfny",
"time":1652767811},
{"token":"dnl13twkQIqifdvaxp1t6e",
"time":1652767811},
{"token":"eDZxQu0FSWm72D2-T1md5X",
"time":1652767811},
{"token":"dnl13twkQIqifdvaxp1t6e",
"time":1652767811}];
const arr = [];
for (var i=0; i<=token.length-1; i++)
{
const millis = Date.now();
const time  = Math.floor(millis / 1000);
if (!arr.includes(token[i].token) && token[i].time > time) {
arr.push(token[i].token)
}
}
console.log(arr);

最新更新