gpt4 book ai didi

javascript - 不同数组上的map()结果不同

转载 作者:行者123 更新时间:2023-12-02 15:01:59 24 4
gpt4 key购买 nike

为什么 map() 操作在不同类型的数组上运行时会生成不同的输出?

我认为下面的literalobj是相同的类型;为什么结果数组不同?为什么非文字数组连接到一个元素?

为什么类型化数组不创建字符串数组,而是返回原始类型化数组?是否有规范要求映射操作不能将类型化数组转换为其他类型?

var literal = [1, 2, 3];
var obj = new Array([1, 2, 3]);
var typed = new Uint32Array([1, 2, 3]);


console.log(literal.map(String));
console.log(obj.map(String));
console.log(typed.map(String));

输出

Array [ "1", "2", "3" ] 
Array [ "1,2,3" ]
Uint32Array [ 1, 2, 3 ]

我运行的是 Firefox 44.0 https://jsfiddle.net/6c8p465r/1/

最佳答案

首先,使用文字数组,或者使用数组构造函数都会产生相同的结果,但你没有正确使用构造函数。

以下内容将在数组内部生成一个数组,这就是为什么您只得到一个以字符串格式返回的数组。因此,当您对此调用 map 时,正在映射的整个条目就是内部数组。

new Array([1, 2, 3]); // Produces [[1, 2, 3]]

使用数组构造函数按照您想要的方式创建数组的正确方法是将值作为参数传递:

new Array(1, 2, 3); // Produces [1, 2, 3]
<小时/>

Uint32Array 有一些必须首先理解的事情。

  1. 它保存无符号整数(无法转换为字符串)
  2. 它的构造函数与Array构造函数不同

如果您查看Mozilla examplesUint32Array 上,您将看到在以这种方式使用它时,一个值数组将被传递到构造函数中。

关于javascript - 不同数组上的map()结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35382360/

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