小编Pat*_*rts的帖子

TamperMonkey 用户脚本不会触发 DOMContentLoaded 事件

这是一个 TamperMonkey 用户脚本。为什么不弹出“HELLO”?我在 Ubuntu 上运行 Google Chrome。

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://*/*
// @match        https://*/*
// @grant        none
// ==/UserScript==

window.addEventListener("DOMContentLoaded", function(event) {
    alert("HELLO");
  });
Run Code Online (Sandbox Code Playgroud)

javascript tampermonkey

2
推荐指数
1
解决办法
2566
查看次数

传播语法的替代方案

我在代码中看到了扩展语法的几种用法。例如:

function tree2table(tree) {
    var children = tree["children"];
    if (children === undefined) return [];
    var result = [];
    for (var i = 0; i < children.length; i++) {
        var child = children[i];
        var link = [child["name"], tree["name"], child["size"]];
        result.push(link);
        result.push(...tree2table(child))
    }
    return result
}
Run Code Online (Sandbox Code Playgroud)

但是,IE 不支持扩展语法。有谁知道改变result.push(...tree2table(child))它的最佳方法是什么,使其成为跨浏览器并像以前一样高效?

javascript arrays cross-browser spread-syntax

2
推荐指数
2
解决办法
6807
查看次数

NodeJS:读取非常大的文件(+ 1GB)的最后X个字节的最有效方法是什么?

我想使用node.js有效地读取一个非常大的文件的最后X个字节.这样做最有效的方法是什么?

据我所知,这样做的唯一方法是创建一个读取流并循环,直到命中字节索引.

例:

// lets assume I want the last 10 bytes;
// I would open a stream and loop until I reach the end of the file
// Once I did I would go to the last 10 bytes I kept in memory 

let f = fs.createReadStream('file.xpto'); //which is a 1gb file
let data = [];

f.on('data', function(data){
    for (d of data){
        data.push(d)
        data = data.slice(1,11); //keep only 10 elements
    }

})
f.on('end', function(){
    // check data
    console.log('Last test …
Run Code Online (Sandbox Code Playgroud)

node.js

2
推荐指数
2
解决办法
735
查看次数

反向数组的最短代码

我需要找到用于反转数组的最短代码,目前我有这个:

weirdReverse=a=>a.sort(()=>1)
Run Code Online (Sandbox Code Playgroud)

这是一个代码战争挑战,其长度为29个字节.我需要长度<= 28所以我需要删除1个字节,我不能改变这个部分:

weirdReverse=a=>a
Run Code Online (Sandbox Code Playgroud)

我不能用reverse().

javascript arrays sorting reverse

2
推荐指数
1
解决办法
170
查看次数

传播语法后使用分号jn javascript中断执行错误"Unexpected token ="

有人可以解释我为什么

const getabc = ()=> ({a:'aa',b:'bb',c:123});
let a, b, c;
{ a, b, c } = {...getabc()}
Run Code Online (Sandbox Code Playgroud)

这很有效

const getabc = ()=> ({a:'aa',b:'bb',c:123});
let a, b, c;
{ a, b, c } = {...getabc()};
Run Code Online (Sandbox Code Playgroud)

这不(注意末尾的分号)

javascript spread-syntax

2
推荐指数
2
解决办法
86
查看次数

为什么使用扩展语法复制对象后 getter/setter 不再起作用?

在下面的代码片段中,扩展语法的工作方式我不太理解:

let obj = {
  set setName(name){
    obj.name = name
  },
  get myName() {
    return obj.name
  }
}
    
obj.setName = 'Jon Doe'

let spread_obj = {...obj}
spread_obj.setName = 'Marion Luke'
console.log('spread_obj name', spread_obj.myName) // spread_obj name Jon Doe 

let create_obj = Object.create(obj)
create_obj.setName = 'Marion Luke'
console.log('create_obj name', create_obj.myName) // create_obj name Marion Luke
Run Code Online (Sandbox Code Playgroud)

您能否解释一下为什么在这种情况下重新分配名称不起作用?

javascript object spread-syntax

2
推荐指数
1
解决办法
1747
查看次数

如何使用传播语法删除第一个数组元素

所以我有一个数组,例如。const arr = [1, 2, 3, 4];。我想使用传播语法...删除第一个元素。

即。[1, 2, 3, 4]==>[2, 3, 4]

可以使用传播语法来完成吗?

编辑:简化了更一般用例的问题。

javascript arrays spread-syntax

2
推荐指数
2
解决办法
699
查看次数

创建一个带有枚举参数的类型

我试图利用该Record类型创建可重用的类型。

enum MyKeys {
  ALPHA = 'ALPHA',
  BETA = 'BETA',
  GAMMA = 'GAMMA',
}

interface MyValues {
  in: any[];
  out: any[];
}

type Case<T> = Record<T, MyValues>;
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以使用Case<MyKeys>代替Record<MyKeys, MyValues>

类型“ T”不满足约束“字符串| 编号 符号'。

类型“ T”不可分配给类型“符号”

generics enums type-constraints typescript

2
推荐指数
1
解决办法
93
查看次数

NodeJS缓冲区 - ASCII二进制表示

number 具有 num.toString(2)

我想知道是否有一种方法来获取字符串'Hello world',并将其转换为ASCII二进制表示.

谢谢!

javascript string binary ascii node.js

2
推荐指数
1
解决办法
320
查看次数

在类型中使用元组而不是联合数组

有没有一种方法可以更严格地输入以下两个函数toCsv()toArray()例如typeof csv

[["key", "life", "goodbye"], ...[string, number, boolean][]]
Run Code Online (Sandbox Code Playgroud)

代替

[("key" | "life" | "goodbye")[], ...(string | number | boolean)[][]]
Run Code Online (Sandbox Code Playgroud)

typeof original相同typeof values,即

{ key: string, life: number, goodbye: boolean }[]
Run Code Online (Sandbox Code Playgroud)

代替

{ key: any, life: any, goodbye: any }[]
Run Code Online (Sandbox Code Playgroud)

我意识到不能保证{ key: 'value', life: 42, goodbye: false }使用的迭代顺序for...in,我对此很满意。即使 TypeScript 编译器不会生成与运行时相同的顺序,任何将键与每行的相应值对齐的一致顺序都是可以接受的,因为使用不依赖于任何特定的顺序。

type Key<T> = Extract<keyof T, string>;
type Column<T> = [Key<T>, ...T[Key<T>][]];
type Columns<T> = [Key<T>[], ...T[Key<T>][][]];

function toCsv<T> …
Run Code Online (Sandbox Code Playgroud)

reflection types transpose tuples typescript

2
推荐指数
1
解决办法
412
查看次数