小编Mar*_*har的帖子

“ x for x in”语法的含义是什么?

执行此代码时实际发生的情况:

text = "word1anotherword23nextone456lastone333"
numbers = [x for x in text if x.isdigit()]
print(numbers)
Run Code Online (Sandbox Code Playgroud)

我知道,这[]构成一个列表,.isdigit()如果字符串(文本)的元素是数字,则检查True或False。但是我不确定其他步骤,尤其是:for循环前面的“ x”是做什么的?

我知道输出是(下),但是如何完成?

Output: ['1', '2', '3', '4', '5', '6', '3', '3', '3']
Run Code Online (Sandbox Code Playgroud)

python for-loop list

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

如何使用数组作为 const 来指定索引签名 TypeScript 中可能的索引?

我想创建一个数组,它将指定哪些字符串将索引对象内的属性以及该对象属性仅包含函数。

我所理解的是,我可以从数组创建联合类型:

我的工作案例是React减速器中的减速器操作(指令)(但它可以在其他地方使用):

const InstructionsArray = [
    'HANDLE_BUTTON_CONVERT_INPUT',
    'HANDLE_CHECKBOX_CONVERT_ON_INPUT',
    'HANDLE_CHECKBOX_DISPLAY_TAGS',
    'HANDLE_TEXTAREA_INPUT',
    'HANDLE_RUNTIME'
] as const;
Run Code Online (Sandbox Code Playgroud)

然后我有带有属性的类型对象:

instruction: typeof InstructionsArray[number]
Run Code Online (Sandbox Code Playgroud)

当然,普通数组允许我们使用任何字符串作为索引,但由于我们将其转换为const,所以它现在只允许使用我们在 array 中指定的字符串。

我真正想要的是拥有一个对象,该对象将具有一些属性名称,并且string所有属性的值均为function。我只想指定那些属性名称 ( string),但由于每个值都是 a function,我不想多次指定它,因此可以认为这是理所当然的。

当前代码如下所示:

const changersLabels = [
    'inventory',
    'quest'
] as const;
Run Code Online (Sandbox Code Playgroud)

但“相同”的方式不适用于这样的对象:

keyboardRouter(changers: {[key:typeof changersLabels[number]:Function]}) {

    //some stuff

}
Run Code Online (Sandbox Code Playgroud)

我做错了什么,这可能吗?

types typescript

3
推荐指数
1
解决办法
1157
查看次数

'this' 关键字在 map() 和 call() 中如何工作?

我一直在刷新我的 JavaScript 知识call()map()用法NodeList

用谷歌搜索应call()该做什么是相当容易的,并且有一些资源以及它如何与map().

然而,正如我在 MDN 上注意到的,该map()函数还可以接受第二个参数,该参数应该设置this关键字 for map()- 或者至少我认为它应该这样做。

我尝试用简单的数组自己检查一下:

var numbers = [1, 2, 3];
var letters = ['a', 'b', 'c'];
Run Code Online (Sandbox Code Playgroud)

..并且通过一个简单的函数,它将作为参数给出map()

var effector = function (x) {
    console.log(x);
}
Run Code Online (Sandbox Code Playgroud)

现在,我不明白的是为什么这两个函数调用有不同的结果:

numbers.map(effector, letters);
numbers.map.call(letters, effector);
Run Code Online (Sandbox Code Playgroud)

我希望它们都向控制台输出字母,因为两个this关键字都应该引用它们(分别引用它们的对象)。

我做了一些进一步的研究,并尝试使用这个修改后的效应器函数:

var effector = function () {
    console.log(this);
}
Run Code Online (Sandbox Code Playgroud)

..再次:

numbers.map(effector, letters);
numbers.map.call(letters, effector);
Run Code Online (Sandbox Code Playgroud)

假设我们处于“use strict”状态,第一个调用日志letters和第二个日志undefined

但同样,我希望这两个调用会产生相同的输出。

我缺少什么?

编辑: …

javascript arrays dictionary this call

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

标签 统计

arrays ×1

call ×1

dictionary ×1

for-loop ×1

javascript ×1

list ×1

python ×1

this ×1

types ×1

typescript ×1