const result = array1.filter(n => !array2.some(m => m.name === n.name));function diff(data1, data2, key = n => n) {
const result = [];
const getKey = key instanceof Function ? key : n => n[key];
const keys = new Set(Array.from(data2, getKey));
for (const n of data1) {
if (!keys.has(getKey(n))) {
result.push(n);
}
}
return result;
}// ваш случай
const result = diff(array1, array2, 'name');
// есть и другие варианты применения
diff([ 1, 2, 3, 4, 5 ], [ 1, 2, 3 ]) // [4, 5]
diff(Array(10).keys(), Array(7).keys()) // [7, 8, 9]
diff('abcde', 'ACE', n => n.toLowerCase()) // ['b', 'd']
Можно ли на чистом CSS
position: sticky;, но оно не очень хорошо поддерживается и не идеально еще работает.
document.querySelectorAll('a').forEach(a=>{
if(!a.href || !(a.href.indexOf('http')===0)) return;
let href = a.href;
a.removeAttribute('href');
a.addEventListener('click',e=>{
location.href = href;
});
});document.querySelectorAll('a').forEach(a=>{
//a.style.backgroundColor = 'red'; //красным проигнорированные
if (a.href && a.href.indexOf('javascript:') === 0) {
//a.style.backgroundColor = '#ff0'; //желтым скриптованные ссылки
let eval_str = a.href.substr(11);
a.addEventListener('click',e=>{
eval(eval_str);
});
a.removeAttribute('href');
return;
}
if(!a.href || !(a.href.indexOf('http')===0)) return;
let c = a.className;
if (c.indexOf('button') > -1 || c.indexOf('btn') > -1 || c.indexOf('like') > -1 || c.indexOf('reply') > -1) return;
if (a.querySelector('svg') || a.querySelector('img')) return;
if (a.style.borderRadius) return;
//a.style.backgroundColor = '#0f0'; //зеленым очищенные ссылки
let href = a.href;
a.removeAttribute('href');
a.addEventListener('click',e=>{
location.href = href;
});
});
document.querySelector(".button").addEventListener("click", (e) => { /* ... */ });
/* и т.д. в таком же духе */^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$