document.querySelectorAll('img[src*="/test/"]')
это не в dom, а в строке
const div = document.createElement('div');
div.innerHTML = str;
const imgsStr = [...div.querySelectorAll('img[src*="/test/"]')].map(n => n.outerHTML).join('');
const imgsStr = Array.from(
new DOMParser().parseFromString(str, 'text/html').querySelectorAll('img[src*="/test/"]'),
n => n.outerHTML
).join('');
мне нужно удалить из этой строки все картинки, которые...
const div = document.createElement('div');
div.innerHTML = str;
div.querySelectorAll('img[src*="/test/"]').forEach(n => n.remove());
str = div.innerHTML;
const d = new DOMParser().parseFromString(str, 'text/html');
d.querySelectorAll('img[src*="/test/"]').forEach(n => n.remove());
str = d.body.innerHTML;
...но если кладу этот файл в отдельную папку и рядом с файлом создаю файл package.json с таким содержанием...
module.exports = {
entry: './path/to/my/entry/file.js'
};
кроме того, что где одна функция возвращает true, там другая возвращает false
const res = Boolean(Number(myNumber));
isFinite('123'); // true
isFinite('123sss'); // false
const parentSelector = 'div';
const childSelector = 'p';
const className = 'there';
const siblingsSelector = `${parentSelector} > ${childSelector}`;
const elementSelector = `${siblingsSelector}.${className}`;
const index = Array.prototype.findIndex.call(
document.querySelectorAll(siblingsSelector),
n => n.classList.contains(className)
);
let index = -1;
for (
let el = document.querySelector(elementSelector);
el;
index++, el = el.previousElementSibling
) ;
const el = document.querySelector(elementSelector);
const index = el ? [...el.parentNode.children].indexOf(el) : -1;
childSelector
, и они не должны учитываться, то третий вариант не подходит, а во втором надо заменить index++
на index += el.matches(childSelector)
. как теперь передать данные в эти компоненты из него?
<Route exact path='/component' render={() => <myComponent prop={value}/>} />
как сделать так, чтобы при загрузке заходило сразу на страницу '/component', а не на '/'?
<Redirect exact from='/' to='/component'/>
const f = (a, sum) => a.reduce((r, x, i) => r.concat(a.slice(i+1).filter(y => x + y == sum).map(y => [x, y])), [])
Но для больших объёмов данных это вряд ли будет эффективно, скорее всего, самое обычное решение с двумя вложенными циклами будет работать шустрее и менее затратно по памяти, чем в цикле гонять массив через slice/filter/map. В лоб это как-то так:const f = (a, sum) => {
const l = a.length;
let r = [];
for (let i = 0; i < l-1; i++)
for (let j = i+1; j < l; j++)
if (a[i] + a[j] == sum)
r.push([a[i], a[j]]);
return r;
}
const getPairsWithSumFromArr = (arr, sum) => {
let map = {},
res = [];
for (let i=0; i < arr.length; i++) {
const currEl = arr[i];
if (map[currEl] !== undefined) {
res.push([map[currEl], currEl]);
} else {
map[sum - currEl] = currEl;
}
}
return res;
}
function calc(val) {
const self = Object.create(calc.prototype);
self.val = val;
return self;
}
calc.prototype = {
plus(val) {
this.val += val;
return this;
},
minus(val) {
this.val -= val;
return this;
},
valueOf() {
return this.val;
},
};
+calc(0).plus(1); // 1
+calc(1).plus(1).plus(1); // 3
+calc(1).plus(2).plus(3).plus(4).minus(5); // 5
calc(3).plus(7).minus(2) * 3; // 24
99 + calc(1); // 100