两数之和
两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]
tips:
2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案
链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载 ...
TypeScript
TS 中的一些符号! 断言操作符断言某个变量不会是 null/undefined,告诉编辑器停止报错。
?. 链判断运算符
?.运算符,可选链直接在链式调用的时候判断,左侧的对象是否为 null 或 undefined。如果是的,就不再往下运算,而是返回 undefined。
TS 中的一些关键词type自定义类型
interfaceinterface 也是用来定义类型的
typeoftypeof 可以获取一个变量的声明类型在 JavaScript 中, typeof 可以判断一个变量的基础数据类型, 在 TS 中,它还可以获取一个变量的声明类型
const obj = { a: ‘1’ };type Foo = typeof obj; // type Foo = { a: string }
keyof
12keyof 可以获取一个对象接口的所有 key 值type Obj = { a: string; b: string }type Foo = keyof obj;// type Foo = 'a' | 'b';
inin ...
谁是任正非?
任正非传-谁是任正非前些天正好入手了《任正非传》,而就在近期孟晚舟历经千辛万苦也终于是回到了祖国,很多事情仿佛冥冥中自有定数;也恰好读完了第一章,因此记录一下体会。第一章的主旨是–谁是任正非。分小章节介绍了任家族、求学的情况、创办华为前的军旅生活、以及华为创立的初衷和第一桶金的由来;
总体感悟有一下几点:
一是家教是第一任学堂,将会奠定我们思想品格的基础;
二是穷人的孩子早当家,年少得志大不幸;
三是时势造英雄,但英雄得有充分的准备;
优秀的家庭教育,给予了孩子看世界的第一双眼睛,父母的一言一行都会是孩子日后的风向标,任能有日后的辉煌,离不开其父的表率和母亲的坚韧;由而联想到自身,不算有一个良好的家教,反而在家庭教育方面,我能确定父亲的行为自是登不了大雅之堂或者说没有做到一个为人父为人夫应尽的职责;万幸的是母亲的陪伴和及时的管教能让自己时刻反思,少时活泼开朗的性格也让自己免于被家庭充斥着的负能量所影响;
己所不欲勿施于人,更何况是日后与自己相濡以沫的妻儿。或是不曾拥有所以从小就暗暗下定决心,父辈曾经的恶性,定不沾染,不能将之视为榜样那成为长鸣的警钟亦可;任的父亲有着坚毅的性格, ...
iTerm2 配置
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
JS question
1234567const a = {};const b = { key: 'b' };const c = { key: 'c' };a[b] = 123;a[c] = 456;console.log(a[b]);
123450;new Number(0)('');new Boolean(false);undefined;new Boolean(false).valueOf();
12345678910111213141. js截至目前有多少种数据类型,请手写出。2. NaN === NaN3. typeof NaN4. typeof null5. typeof typeof 16. null == undefined7. ""== 08. 1 + null9. '1' + null10. Number(null)11. Number("")12. []==013. []==![]14. []==fal ...
多标签页面和 @antv/g2 结合使用的bug
多标签页面和@antv/g2 结合使用的 bug分析原因由于 react 官方没有像 vue 中 keep:alive 的多标签页解决方案;实际工作中我们选取了react-router-cache-route该方案会将数据保存一份并使用 display:none 和 display:block 的形式对多 tab 进行切换;但当我们使用 @antv/g2对一些数据进行图片渲染时由于异步数据且 tab 页面会存储 之前的 state,导致 tab 页面的图表 render 时出现多次渲染,在某一个 container 中渲染得到了多个图表 canvas 的结果;
Chart 使用
处理数据
实例化 Chart
填充数据
绘制图标横纵轴等信息
绘制
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263const renderChat = () => { // 1. 处理数据 const ...
URIError: URI malformed
URIError: URI malformed最近在使用 decodeURIComponent 的时候,发现浏览器参数中含有特殊符号%,会导致 decodeURIComponent 解码报错
encodeURIComponent首先我们需要知道 encodeURIComponent 是对 v8 内置的对于浏览器参数进行编码的函数而 decodeURIComponent 是对其进行解码。
例如在 https://droplets.vercel.app/?droplets%E5%8D%9A%E5%AE%A2%E5%A5%BD%E8%AF%84%E7%8E%8799 中使用decodeURIComponent(window.location.href)我们能正常解析得到 https://droplets.vercel.app/?droplets博客好评率99但是在 https://droplets.vercel.app/?param=droplets%E5%8D%9A%E5%AE%A2%E5%A5%BD%E8%AF%84%E7%8E%8799% 中使用时我们能预期的正常解析为 https:/ ...
markdown语法
markdown 常用语法介绍
| HEADER| EMPHASIS| HORIZONTAL_LINE| LIST| TABLE| LINK| IMAGE| QUOTE | | COMMENT| CODE| GITHUB_EMOJI| OTHERS| HTML_TAGS| TEXT_ART |
HEADER# Header1
## Header2
### Header3
#### Header4
##### Header5
###### Header6
H1
===
H2
---
Header1Header2Header3Header4Header5Header6H1H2
↥ back to top
EMPHASIS*Italic1* _Italic2_
**Bold1** __Bold2__
***Bold_Italic***
~~Strikethrough~~
Italic1 Italic2 Bold1 Bold2 _Bold_Italic_ Strikethrough
↥ back to top
HORIZONTAL LINE ...
直接赋值字符串和new String()的区别
创建一个字符串JS 中创建字符串的方法主要有三种:
字符串字面量 const str = 'foo';
New String 实例化const str = new String("foo");
String 构造函数转换const str = String('foo');
但是三者之前的区别我们很多时候并没有探究,只不过进行’==’比较时这些知识却显得尤为重要;
结论:
通过 String 构造函数转换的字符串和字符串字面量都是 primitive 值(原生值、基本数据类型); primitive 值并不会拥有自己的属性与方法。
通过 New String 来实例化的是一个 String 对象,成为了内置属性[[PrimitiveValue]],String 的实例享有 String.prototype 上所有的方法.
结论与悖论简单来看个例子
1234567891011121314151617var a = 'foo';var b = new String('foo');var ...
零宽字符
起因:前端的传值在控件和控制台在以肉眼看来并没有什么问题,但后端收到的值却多出了一些特殊字符(\u200b),导致后端处理数据失败;
了解零宽字符 - \u200b经查询之后发现 \u200b 是零宽字符系列中的一个,零宽字符是一种不可打印的 Unicode 字符;
零宽字符主要有以下几类:
零宽度空格符 (zero-width space) U+200B : 用于较长单词的换行分隔;
零宽度非断空格符 (zero width no-break space) U+FEFF : 用于阻止特定位置的换行分隔;
零宽度连字符 (zero-width joiner) U+200D : 用于阿拉伯文与印度语系等文字中,使不会发生连字的字符间产生连字效果;
零宽度断字符 (zero-width non-joiner) U+200C : 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果;
左至右符 (left-to-right mark) U+200E : 用于在混合文字方向的多种语言文本中(例:混合左至右书写的英语与右至左书写的希伯来语),规定排版文字书写方向左至右;
右至左 ...