global.users = [111,333,444,666,777]
global.blacklist = [111,222,333,555,888]
const users = Files.readFileSync('./users.txt', 'utf8').split(/\r?\n/);
const blacklist = Files.readFileSync('./blacklist.txt', 'utf8').split(/\r?\n/);
global.users = global.users.filter(user => !global.blacklist.find(b => user == b));
const blacklist = Files.readFileSync('./blacklist.txt', 'utf8').split(/\r?\n/);
const users = Files.readFileSync('./users.txt', 'utf8').split(/\r?\n/).filter((user) => {
var idx = blacklist.indexOf(user);
if (idx === -1) {
return true;
} else {
blacklist.splice(idx, 1); // тут я не уверен в профите уменьшения блеклиста, потому что это надо будет перестраивать индексы, так что можно просто сделать return blacklist.indexOf(user) === -1;
return false;
};
});
let users = [111, 333, 444, 666, 777], // важно, что массивы отсортированы
blacklist = [111, 222, 333, 555, 888],
intersection = [];
users.unshift(-1); // -1 заведомо меньше всех
blacklist.unshift(-1);
for (let u = users.pop(), b = blacklist.pop(); u > -1 || b > -1;) {
if (u > b) u = users.pop();
else if (u < b) b = blacklist.pop();
else {
intersection.push(u);
u = users.pop();
b = blacklist.pop();
}
}
intersection.reverse(); // если это вообще надо
console.log(intersection);