gpt4 book ai didi

javascript - 从 Array.prototype.map() 返回不一致

转载 作者:行者123 更新时间:2023-12-04 07:54:13 25 4
gpt4 key购买 nike

我正在尝试获取此输出 ['1', '12', '123']从:

   getSubstrings('123');

function getSubstrings(string) {
let array = string.split('');
let subarray = [];
return array.map(element => {
subarray.push(element);
console.log(subarray) //this gets me ['1'], then ['1','2'] ...
return subarray; //but this is not returning the same as in console.log(subarray)
});

}
我知道我可以通过添加 .join('') 得到我想要的结果到最后 subarray .我的问题不是关于如何获得 ['1', '12', '123']但是,为什么返回与控制台输出的子数组相同的子数组会导致 [[1','2','3'], ['1','2','3'], ['1','2','3']]而不是 [[1], [1,2], [1,2,3]]很奇怪,console.log(subarray) 的输出与填充在 .map() 中的返回子数组不同我在这里遗漏了什么吗?提前致谢。

最佳答案

问题是子数组在每个映射“迭代”中都在变化,因为您没有创建新的子数组,只是传递相同的引用以返回。它将改变所有三种情况。
首先,它返回 [1] ,但随后它返回 [1,2]并将第一个更改为 [1,2] .最后一个元素也会发生同样的情况。最后,您将拥有一个由相同引用(子数组)的三个副本组成的数组。
通过 spread operator 修复它

function getSubstrings(string) {
let array = string.split('');
let subarray = [];
return array.map(element => {
subarray.push(element);
return [...subarray].join(""); // join to get the desired output
});
}

console.log(getSubstrings("123"))

关于javascript - 从 Array.prototype.map() 返回不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66787890/

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