gpt4 book ai didi

具有 'fromCharCode'(字符长度)的 Javascript 映射数组

转载 作者:数据小太阳 更新时间:2023-10-29 04:02:11 25 4
gpt4 key购买 nike

以下内容来自 Chrome 控制台中的交互式 session :

myarray
//-> [67, 65, 84]

String.fromCharCode(67)
//-> "C"

String.fromCharCode(67).length
//-> 1

String.fromCharCode(myarray[0])
//-> "C"

String.fromCharCode(myarray[0]).length
//-> 1

myarray.map(String.fromCharCode)
//-> ["C", "A", "T"]

myarray.map(String.fromCharCode)[0]
//-> "C"

myarray.map(String.fromCharCode)[0].length
//-> 3

谁能解释为什么最后一个操作返回3

最佳答案

非常有趣的问题。

答案是:你在最后得到 3 的原因是 fromCharCode 返回一个字符串,其字符数与参数中的参数一样多对它的调用map 使用三个参数调用回调函数:元素的值、元素的索引和被遍历的对象。因此,一个字符串包含三个字符,但不是三个易于显示的字符。棘手。

具体来说,我们得到第一个参数的 "C";第二个参数的字符 0(因为我们正在查看 [0];对于 [1] 等将是 1),以及基于强制转换的字符将数组转换为数字(使用 fromCharCode 用于此的任何规则;Šime Vidas 在下面说它将对其执行 ToUInt16,这将导致 0)。

例如:

> String.fromCharCode(67, 0, [67, 65, 84]).length
3

...就像来自 map 的调用一样。

为清楚起见:

> String.fromCharCode(67, 0, [67, 65, 84]).length
3
> String.fromCharCode(67, 0, null).length
3
> String.fromCharCode(67, 0, 0, 0, 0, 0, 0).length
7

如果我们确保我们一次只传递一个参数,我们就不会看到意想不到的效果,所以当直接使用它时会得到一个我认为我们大多数人都不会想到的结果:

> [67, 65, 84].map(String.fromCharCode)
["C", "A", "T"]
> [67, 65, 84].map(String.fromCharCode)[0]
"C"
> [67, 65, 84].map(String.fromCharCode)[0].length
3

...这给了我们一个更容易理解的结果:

> [67, 65, 84].map(function(value) { return String.fromCharCode(value); })
["C", "A", "T"]
> [67, 65, 84].map(function(value) { return String.fromCharCode(value); })[0]
"C"
> [67, 65, 84].map(function(value) { return String.fromCharCode(value); })[0].length
1

关于具有 'fromCharCode'(字符长度)的 Javascript 映射数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5566937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com