这个怎么运作?请问一般怎么改?
const a = {
i: 1,
toString: function () {
return a.i++;
}
}
if(a == 1 && a == 2 && a == 3) {
console.log('Hello World!');
}
这个怎么运作?请问一般怎么改?
const a = {
i: 1,
toString: function () {
return a.i++;
}
}
if(a == 1 && a == 2 && a == 3) {
console.log('Hello World!');
}
有一个 useFetch钩子
问题是我看了他的代码,不明白为什么那里使用关键字void
const fetchData = async () => {
dispatch({ type: 'loading' })
// If a cache exists for this url, return it
if (cache.current[url]) {
dispatch({ type: 'fetched', payload: cache.current[url] })
return
}
try {
const response = await fetch(url, options)
if (!response.ok) {
throw new Error(response.statusText)
}
const data = (await response.json()) as T
cache.current[url] = data
if (cancelRequest.current) return
dispatch({ type: 'fetched', payload: data })
} catch (error) {
if (cancelRequest.current) return
dispatch({ type: 'error', payload: error as Error })
}
}
void fetchData() // -> Как это работает?
这个怎么运作?它是无效的 TS-a 还是 JS-a?
最初,我以为是为了不写而写在那里的await
。但是在测试了这段代码之后,我确信事实并非如此。
有两张桌子
英雄
ID | 姓名 | 宇宙ID |
---|---|---|
12 | 标记 | 一 |
99 | 颖片 | 一 |
宇宙
ID | 姓名 |
---|---|
一 | 仙女座 |
2 | 极光 |
我怎样才能返回 **Hero 表但universe_id
把Universe->name改为?我是 MySql 的新手,所以我很难弄清楚。
尝试过这样的事情
exports.getHero = (req, res) => {
const sql = "SELECT * FROM `hero` JOIN `universe` WHERE `id`=`universe_id` ON `hero.universe_id`=`universe.id`";
db.query(sql, (error, results) => {
if (error) {
console.log(error);
} else {
response.returnSingleValue(results, res);
}
});
};
不工作。
也试过这段代码
SELECT `hero`.`id`, `hero`.`name`, `universe`.`name`
FROM `hero`
JOIN `universe` ON `hero`.`universe_id` = `universe`.`id`
它也无法正常工作。
预期结果
[{
id: 12,
name: Mark,
universe_id: Andromeda
},
{
id: 99,
name: Glume,
universe_id: Andromeda
}]
解析代码
const data = [
{
continent_name: "Asia",
country_name: "Iran",
subdivision_1_name: "Chaharmahal and Bakhtiari Province",
city_name: "Lir Abi"
},
{
continent_name: "Europe",
country_name: "Cyprus",
subdivision_1_name: "Ammochostos",
city_name: "Protaras"
},
{
continent_name: "Asia",
country_name: "Iran",
subdivision_1_name: "West Azerbaijan Province",
city_name: "Post"
},
{
continent_name: "Africa",
country_name: "Somalia",
subdivision_1_name: "Bakool",
city_name: "Oddur"
}
],
keys = ["continent_name", "country_name", "subdivision_1_name", "city_name"],
result = data.reduce(
(r, o) => {
keys.reduce(function (q, k) {
const label = o[k];
if (!q[label]) q._.push({ label, children: (q[label] = { _: [] })._ });
return q[label];
}, r);
return r;
},
{ _: [] }
)._;
最后一行是如何工作的 )._;
?
如果它返回[]
这个数组,那么为什么我的代码不起作用?
const numbers = [1,2,3,4,5];
const a = numbers.reduce((a, c) => a._ += c, { _: 5 })._;
我收到一个错误
无法在数字“6”上创建属性“_”
码头工人新手。
有一个带有 create-react-app 的标准构建。
我想问一下如何制作,以便在更新容器代码时重新启动程序集?
例如,在App.jsx
我将代码从
<h1>hello world</h1>
在
<h1>hello world zuzu</h1>
我想更新代码localhost
码头工人-compose.yml
version: "3"
services:
frontend:
build: ./dashboard
container_name: frontend
command: npm run start
restart: unless-stopped
stdin_open: true
tty: true
ports:
- "3000:3000"
environment:
- PORT=3000
Dockerfile
FROM node:13.12.0-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm i
COPY . .
CMD ["npm", "start"]
通过运行docker-compose up --build
试图通过docker-compose up --build --no-cache
还尝试添加这些设置
stdin_open: true
tty: true
到文件docker-compose.yml
,没有帮助
该按钮应如下所示:
我得到这样的东西。skew
但我不知道如何添加到阴影
html {
text-align: center;
}
.heroes {
background: #fff;
border: 2px solid #000;
transform: skewX(-25deg);
padding: 10px 10px;
text-transform: uppercase;
font-weight: bold;
box-shadow: -4px 3px 1px 1px rgb(0,0,0, 1);
}
<button class="heroes">Создана для ИТ-героев</button>
有一条线。
const stringCount = "ggggaaaazzzzzlllllluuuuuuuuu";
任务是编写一个函数来计算字符数并返回这样的结果g4a4z5l6u9
我得到了以下非工作代码
const str = "ggggaaaazzzzzlllllluuuuuuuuu";
const strNumeric = (str) => {
let counter = 0,
currentItem = str[0],
arr = [];
[...str].forEach((iterator) => {
if (iterator !== currentItem) {
currentItem = iterator;
arr = [...arr, `${currentItem}${counter}`];
counter = 0;
} else {
counter += 1;
}
});
console.log(arr);
};
console.log(strNumeric(str));
执行此代码的结果是
[
"a4",
"z3",
"l4",
"u5"
]
第二次尝试
const str = "ggggaaaazzzzzlllllluuuuuuuuu";
const strNumeric = (str) => {
let main = [],
count = 0,
arr = [];
[...str].forEach((a) => {
if (!arr.includes(a)) {
count = str.match(/a/g, "").length;
arr = [...arr, a];
main = [...main, `${a}${count}`];
} else {
count = 0;
}
});
console.log(main);
};
strNumeric(str);
它非常接近这里的解决方案。
我教这样一个数组-> ["g4", "a4", "z4", "l4", "u4"]
问题出在这一行->count = str.match(/a/g, "").length;
在这里,出于某种原因,我总是得到 4。为什么还不清楚。
我希望看到一个更易于理解的实现,请不要使用单行函数和单字符变量。
关键字是如何工作的new
?
做了一些测试,但没有发现任何明智的。
这一切都始于我发现的这段代码。
const
pattern = ['A','B'],
times = 5,
result = Array(times).fill(pattern).flat();
console.log(...result); // A B A B A B A B A B
为什么这里没有使用关键字new
?出于好奇,我使用了,但结果并没有改变。
const
pattern = ['A','B'],
times = 5,
result = new Array(times).fill(pattern).flat();
console.log(...result); // A B A B A B A B A B -> тоже самое что и наверху
这很有趣。
这里还有一些测试。
const a = new Array(); // -> a === []
const b = new Array; // -> b === []
const c = Array(); // -> c === []
这个怎么运作?
在 SO.EN 我看到了这样的代码。
const
data = [{ 0: { a: 1, b: 2 }, 1: { c: 3, d: 4 } }, { 0: { e: 5, f: 6 }, 1: { g: 7, h: 8 } }],
flat = data.flatMap(o => Object.assign([], o));
console.log(flat);
但是我在任何地方都找不到第一个参数是什么Object.assign
。它克隆了对象。在这种情况下,结果证明它解构了它?
我找不到任何将它Object.assign
与空数组一起使用的示例。如果可能,请解释它的工作原理并举例说明。越原始的例子越好。
请告诉我如何在前四个字母或数字后添加空格。
模式是#### ######
4 个字符,然后 6 个字符(可以是数字和字母)
function App() {
const [val, setVal] = useState();
function test(data) {
return data.substr(0, 4) + " " + data.substr(4);
}
return (
<div className="App">
<input value={test(val || "")} onChange={(e) => setVal(e.target.value)} />
</div>
);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
找到这个代码
var data = "347405405655278";
data = data.substr(0, 4) + " " + data.substr(4, 6) + " " + data.substr(10);
console.log(data);
就在这里
我为自己更改了它,但有些东西不起作用。
function test(data) {
return data.substr(0, 4) + " " + data.substr(4);
}
有一项任务是按上次登录的日期对用户进行排序。
我使用sort
moment.js 中的方法来解决这个问题。我的第一个决定是这样的。
myArray.sort((a ,b ) => {
return moment().diff(a.lastLoginAt, "seconds") - moment().diff(b.lastLoginAt, "seconds");
});
它没有用。我认为问题在于日期之间的差异非常大,特别是几个月。我想以秒为单位进行比较。
然后我就这样解决了这个问题,问题是代码结果很糟糕。
myArray.sort((a ,b ) => {
if ( moment().diff(a.lastLoginAt, "months") - moment().diff(b.lastLoginAt, "months") === 0 ) {
if ( moment().diff(a.lastLoginAt, "days") - moment().diff(b.lastLoginAt, "days") === 0 ) {
if ( moment().diff(a.lastLoginAt, "hours") - moment().diff(b.lastLoginAt, "hours") === 0 ) {
if ( moment().diff(a.lastLoginAt, "minutes") - moment().diff(b.lastLoginAt, "minutes") === 0 ) {
if ( moment().diff(a.lastLoginAt, "seconds") - moment().diff(b.lastLoginAt, "seconds") === 0 ) {
return moment().diff(a.lastLoginAt, "seconds") - moment().diff(b.lastLoginAt, "seconds");
}
} else {
return moment().diff(a.lastLoginAt, "minutes") - moment().diff(b.lastLoginAt, "minutes");
}
} else {
return moment().diff(a.lastLoginAt, "hours") - moment().diff(b.lastLoginAt, "hours");
}
} else {
return moment().diff(a.lastLoginAt, "days") - moment().diff(b.lastLoginAt, "days");
}
} else {
return moment().diff(a.lastLoginAt, "months") - moment().diff(b.lastLoginAt, "months")
}
});
这段代码的工作原理是这样的。如果月份相等,则按天比较,如果天数相等,则按小时比较,依此类推。
问题是如何写更简洁,它可以以某种方式动态写入块if
,但我不知道如何。
我不明白为什么 git 不允许我切换分支。
做过
git add .
git commit -m "bla bla"
而当你需要切换分支时,它会报错:
local changes would be overwritten by checkout
但为什么?我做出承诺了吗?
我不明白它是如何工作git stash
的,但我试过了。直到我写的开关
git stash
然后我切换到master分支
我的生意然后回到我的分支机构
写作
git stash pop
和
git merge master
再次出错
Your local changes to the following files would be overwritten by merge
所以有什么问题?
never
我在 TS Habr、Medium、SO.en、SO.ru中阅读了很多关于类型的资源,还观看了视频课程。
到处都在说在无限循环中使用相同的东西,never
在存在无限循环、错误或递归的函数中。
function error(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
}
}
function infiniteRec(): never {
return infiniteRec();
}
到处都是标准文本。但是我还是不明白怎么用?没有可以戳看的工作代码。
我尝试使用never
书面的无限循环,但没有奏效。没明白为什么?怎么了?
function infiniteLoop(): never {
while (true) {
console.log("true");
}
}
infiniteLoop(); // Potential infinite loop: exceeded 10001 iterations.
有一个简单的 jsx 代码。
<Typography>
{`${t('txt.title', { phone } )}`}
</Typography>
以及对应的json文件中的翻译。
"txt": {
"title": "На номер {{ phone }} был отправлен код верификации.",
}
文本显示所有规则。但是我怎样才能实现结果,以便输出文本包含在某种标签中。例如标签<b></b>
我试着这样写:
import { Trans } from 'react-i18next';
<Trans t={t('txt.title')}><b>{phone}</b></Trans>
没有帮助。
为了快速超频,我将立即显示代码:
const result1 = "A".localeCompare("a", {caseFirst: "upper"});
const result2 = "A".localeCompare("a", {caseFirst: "lower"});
console.log(result1); // 1
console.log(result2); // 1
为什么在这两种情况下都给 1? 毕竟设置不同。
MDN说:
案例第一
指定大写字母还是小写字母应该在前。
好吧,为什么它不起作用?
下面有一个代码结构。
有必要实现 html 元素缩进的树状结构。
即:数字1
不应该有填充和1.1
10 像素1.1.1
20 像素1.2
再 10 像素等。
我得到的都在下面。
const links = document.querySelectorAll(".nav-link");
[...links].reduce((acc, val) => {
let counter = 0;
if (acc.textContent[counter] === val.textContent[counter]) {
if (acc.style.paddingLeft === "10px") {
val.style.paddingLeft = "20px";
} else {
val.style.paddingLeft = "10px";
}
}
return (acc = val);
});
a {
list-style: none;
}
.doc-menu .nav-link {
display: block;
padding: 2px;
color: #616670;
}
<nav id="doc-menu" class="nav doc-menu flex-column sticky">
<a class="nav-link scrollto" href="#section-2">1 aa 5</a>
<a class="nav-link scrollto" href="#section-3">1.1 bbb</a>
<a class="nav-link scrollto" href="#section-4">1.1.1 addasdasd </a>
<a class="nav-link scrollto" href="#section-4">1.1.1.1 test </a>
<a class="nav-link scrollto" href="#section-5"
>2 some</a
>
<a class="nav-link scrollto" href="#section-6">2.1 bulso</a>
<a class="nav-link scrollto" href="#section-9">2.1.1 bazuk</a>
<a class="nav-link scrollto" href="#section-13">2.2 zept</a>
</nav>
在这里,我知道有必要将像素变量的结果加倍,但我不明白如何正确地做到这一点,以便在添加1.1.1.1
(甚至更多数字)时一切正常,而无需额外检查 ifs。我也试过这样写,但也没有用。
[...links].reduce((acc, val) => {
let counter = 0;
let px = 10;
if (acc.textContent[counter] === val.textContent[counter]) {
const accPad = +acc.style.paddingLeft.split("px")[0];
const valPad = +val.style.paddingLeft.split("px")[0];
if (accPad > valPad) {
val.style.paddingLeft = px * 2 + "px";
} else {
val.style.paddingLeft = px + "px";
}
}
return (acc = val);
});
Upd:如您所见,块缩进1.1.1.1
等同于1.1
不正确的块缩进。