(str.match(/[0-9]+/g) ?? []).map(Number)
// или
Array.from(str.matchAll(/\d+/g), n => +n)
// или
str.split(/\D+/).filter(Boolean).map(parseFloat)
// или
eval(`[${str.replace(/\D+/g, (m, i) => i ? ',' : '')}]`)
// или
[...str].reduce((acc, n, i, a) => (
isNaN(n) || (isNaN(a[i - 1]) && acc.push(0), acc.push(acc.pop() * 10 + n * 1)),
acc
), [])
между React и JS
Как бы перекинуть массив в React из JS, но так, чтобы и через JS я мог его изменить?
window.MY_VAR = 123;
console.log(window.MY_VAR); // 123
element[0].innerHTMl="new text";
//код общий и для мобилок
.elem {
//...
}
//код для устройств 768++
@media (min-width: 768px) {
// ...
}
//код для устройств 768++
@media (min-width: 768px) {
// ...
}
//код для устройств 1024++
@media (min-width: 1024px) {
// ...
}
//и тп
@media(max-width: 991px){
html{
font-size: 10px;
}
.shapka-element {
font-size: 12px;
}
}
"window.autoDetectHighContrast": false,
"window.menuBarVisibility": "compact",
"debug.console.fontSize": 10,
"workbench.editor.enablePreview": false,
"workbench.preferredHighContrastColorTheme": "Atom Material Theme",
"workbench.preferredLightColorTheme": "Default Dark+",
"workbench.colorCustomizations": { <----- theme color settings )
"foreground": "#cccccc",
"focusBorder": "#00807a",
"selection.background": "#007974",
"scrollbar.shadow": "#000000",
"activityBar.foreground": "#e6e6e6",
"activityBar.background": "#1c2323",
"activityBar.inactiveForeground": "#ffffff66"
},
<h1 id=h1></h1>
<script>
let radius = 70;
let text = "corporate*service*";
let step = Math.PI * 2 / text.length;
for(i = 0; i < text.length; i ++){
let x = radius + radius * Math.sin(i * step);
let y = radius + radius * Math.cos(i * step);
let myspan = document.createElement("span");
myspan.innerText = text[i];
myspan.style.position = "absolute";
myspan.style.left = x + "px";
myspan.style.bottom = y + "px";
myspan.style.transform = "rotateZ(" + i * 360 / text.length + "deg)";
h1.appendChild(myspan);
}
</script>
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
);
PRAGMA foreign_keys = ON;
worker.slow()
оборачивается в новую функцию-декоратор. Декоратор выполняет некую работу, вызывает оригинальную функцию, с ее результатом может выполнить еще какую-то работу, и возвращает итоговый результат.worker.slow = cachingDecorator(worker.slow, hash);
worker.slow
у вас уже не оригинал, а декоратор. Т.е. эта функцияfunction() {
let key = hash(arguments); // (*)
if (cache.has(key)) {
return cache.get(key);
}
let result = func.call(this, ...arguments); // (**)
cache.set(key, result);
return result;
};
arguments
.function cachingDecorator(func, hash) {
let cache = new Map();
return function(arg1, arg2) { // явно указать аргументы
let key = hash(arg1, arg2); // (*)
if (cache.has(key)) {
return cache.get(key);
}
let result = func.call(this, arg1, arg2); // (**)
cache.set(key, result);
return result;
};
}
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
export const uploadThunk = (uploadData) => {
return async (dispatch: Dispatch<Action>, getState: () => RootState) => {
try {
await axiosInst.post(
`${upload_url}/${subjectId}/upload`,
uploadData, {cancelToken: source.token}
);
} catch (e) {
console.log("Failed upload", e);
}
};
};
export const cancelUploadThunk = () => {
return async (dispatch: Dispatch<Action>, getState: () => RootState) => {
source.cancel("Operation canceled by the user.");
};
};
https://example.com/?name=%D0%9F%D0%BB%D0%B0%D0%BD%D1%88%D0%B5%D1%82&imgUrl=https%3A%2F%2FcloudData.com%2Fimg%2F7