IanSun

IanSun 查看完整档案

上海编辑  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

IanSun 回答了问题 · 1月20日

求数组中最短字符串长度 用reduce

Array.prototype.reduce 实现

arr.reduce((c, p) => c.length < p.length ? c : p);

关注 3 回答 2

IanSun 回答了问题 · 1月19日

如何固定一个按钮到底部

  1. div 设置display: flex;flex-direction: column;,当然还有 overflow-y: auto;
  2. 给可变内容区设置 flex-basis: 100%;
  3. 给按钮区设置 flex-shrink: 0;

关注 4 回答 3

IanSun 回答了问题 · 1月19日

解决正则匹配问题

const string = "{t('word')} {t(\"word1\")} {t(`word2`)} {t(word3)}";

string.match(/(?<=(?:^|\s)\u007b\u0074\u0028([\u0022\u0027\u0060]?))[^\u0022\u0027\u0060]+(?=\1\u0029\u007d(?:\s|$))/g);

关注 4 回答 4

IanSun 回答了问题 · 1月18日

css怎么让一个盒子全屏显示,任意层级,不随父级定位影响。

无法在任意场景下都实现的。
只要有祖辈节点设置了内容与剩余文档脱离,那么当DOM树与CSSOM树合成时,就会影响子级节点的布局与显示。

关注 4 回答 4

IanSun 回答了问题 · 1月15日

js面试题:取出数组中出现两次的值

看了一下,最好的是 @madRain 的解法。
然后又仔细读了下题。要求只找出出现过两次的项。在此题中还有一个已知的限定条件,重复的项最多只会出现2次。所以 @madRain 的解法是最优的。如果没有这个已知项,那是无论如何也无法在O(n)中判断出的,当找出重复项时并不知道后续是否还有重复项,只有在有顺序的数组中才能在一次中完成判断,所以至少要O(2n)。而正因为此题有了这个限定条件,所以可以实现O(n)


要O(n)就只能一次遍历,而且还不能开辟额外空间,即既不能另外做一个缓存列表,也无法使用新的数组。在这种情况下,是无法完成的。
不过,O(n)不行,O(2n)却是可以的。第一步先对数组排序,第二步再比较前后项即可。

const arr = [1, 1, 2, 3, 5, 3];

for (let i = arr.sort().length - 1; 0 < i; i -= 1) {
  i -= arr.splice(i, 1)[0] === arr[i - 1];
}

console.log(arr);

关注 9 回答 8

IanSun 回答了问题 · 1月14日

typescript class定义私有方法

class Test {
  public readonly c = 1;

  public b () {
    const a = () => {
      console.log(this.c);
    };
    a();
  }
}

关注 3 回答 2

IanSun 回答了问题 · 1月14日

解决计算实际时间天数(时间范围去重)

function getDays (ranges: readonly (readonly [number, number])[]): number {
  const days = new Set<number>();
  for (const [start, end] of ranges) {
    for (let time = start; end >= time; time += 8.64e7) {
      days.add(time);
    }
  }
  return days.size;
}

getDays([
  [Date.parse("2021-01-02"), Date.parse("2021-01-05")],
  [Date.parse("2021-01-04"), Date.parse("2021-01-06")],
]);

关注 4 回答 3

IanSun 回答了问题 · 1月14日

解决typescript 函数声明使用: 和=> 有什么不同?

没有差别的。如果报错检查下typescript的版本。

关注 2 回答 1

IanSun 回答了问题 · 1月14日

触发硬件加速的css动画,还会不会引起回流?

和是否硬件加速无关。

本身会引起reflow的就一定会reflow,不会的就一定不会。

硬件加速只是决定数值变化的计算是用哪个硬件设备罢了。

关注 3 回答 2

IanSun 回答了问题 · 1月13日

解决这行 sed 脚本到底做了什么 ?

直接讲后面的正则部分


你写的.*(贪婪匹配,也就是从最长的字符串开始逐个字符缩减匹配
PING baidu.com (220.181.38.148) 56(84) bytes of data.
PING baidu.com (220.181.38.148) 56(84) bytes of data
PING baidu.com (220.181.38.148) 56(84) bytes of dat
PING baidu.com (220.181.38.148) 56(84) bytes of da
PING baidu.com (220.181.38.148) 56(84) bytes of d
PING baidu.com (220.181.38.148) 56(84) bytes of
PING baidu.com (220.181.38.148) 56(84) bytes of
PING baidu.com (220.181.38.148) 56(84) bytes o
PING baidu.com (220.181.38.148) 56(84) bytes
PING baidu.com (220.181.38.148) 56(84) bytes
PING baidu.com (220.181.38.148) 56(84) byte
PING baidu.com (220.181.38.148) 56(84) byt
PING baidu.com (220.181.38.148) 56(84) by
PING baidu.com (220.181.38.148) 56(84) b
PING baidu.com (220.181.38.148) 56(84)
PING baidu.com (220.181.38.148) 56(84)
PING baidu.com (220.181.38.148) 56(84
PING baidu.com (220.181.38.148) 56(8
PING baidu.com (220.181.38.148) 56(
到这里匹配了正则,于是将这部分进行替换,替换的内容为/中的内容,在这里是空。所以这段内容相当于被删掉了。


再来看[^(]*,省略部分匹配过程,直到缩减为
PING baidu.com (220.181.38.148) 56(
注意此时正则并未匹配成功,因为[^(]*要求的是所有非(字符。所以将会继续缩减,直到只剩下一个(
PING baidu.com (
到这个时候终于匹配成功,于是这部分内容被替换,也就是被删掉。

关注 2 回答 1

认证与成就

  • 获得 44 次点赞
  • 获得 8 枚徽章 获得 1 枚金徽章, 获得 1 枚银徽章, 获得 6 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2019-04-08
个人主页被 750 人浏览