这是一个 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)
我在代码中看到了扩展语法的几种用法。例如:
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))它的最佳方法是什么,使其成为跨浏览器并像以前一样高效?
我想使用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) 我需要找到用于反转数组的最短代码,目前我有这个:
weirdReverse=a=>a.sort(()=>1)
Run Code Online (Sandbox Code Playgroud)
这是一个代码战争挑战,其长度为29个字节.我需要长度<= 28所以我需要删除1个字节,我不能改变这个部分:
weirdReverse=a=>a
Run Code Online (Sandbox Code Playgroud)
我不能用reverse().
有人可以解释我为什么
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)
这不(注意末尾的分号)
在下面的代码片段中,扩展语法的工作方式我不太理解:
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 LukeRun Code Online (Sandbox Code Playgroud)
您能否解释一下为什么在这种情况下重新分配名称不起作用?
所以我有一个数组,例如。const arr = [1, 2, 3, 4];。我想使用传播语法...删除第一个元素。
即。[1, 2, 3, 4]==>[2, 3, 4]
可以使用传播语法来完成吗?
编辑:简化了更一般用例的问题。
我试图利用该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”不可分配给类型“符号”
number 具有 num.toString(2)
我想知道是否有一种方法来获取字符串'Hello world',并将其转换为ASCII二进制表示.
谢谢!
有没有一种方法可以更严格地输入以下两个函数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) javascript ×7
arrays ×3
node.js ×2
typescript ×2
ascii ×1
binary ×1
enums ×1
generics ×1
object ×1
reflection ×1
reverse ×1
sorting ×1
string ×1
tampermonkey ×1
transpose ×1
tuples ×1
types ×1