未从大字符串数组填充Javascript集
我有一个由~6k个字符串元素组成的大型字符串数组。我知道集合可以在我的浏览器中工作,在较小的阵列上测试时也可以。当我尝试将大型数组转换为新的数组集时,它所做的只是返回一个空数组 我的数组最初是嵌套数组的一部分,尽管已经尝试了几种将其输入到集合中的方法。其中一些是:未从大字符串数组填充Javascript集,javascript,set,Javascript,Set,我有一个由~6k个字符串元素组成的大型字符串数组。我知道集合可以在我的浏览器中工作,在较小的阵列上测试时也可以。当我尝试将大型数组转换为新的数组集时,它所做的只是返回一个空数组 我的数组最初是嵌套数组的一部分,尽管已经尝试了几种将其输入到集合中的方法。其中一些是: var input = Bigger_array[1]; var input = [...Bigger_array[1]]; var dummy = Bigger_array[1]; var input = [...dummy];
var input = Bigger_array[1];
var input = [...Bigger_array[1]];
var dummy = Bigger_array[1];
var input = [...dummy];
此外,还尝试了创建集合的不同方法:
var s = new Set(input);
var s = new Set();
for (var j = 0; j < input.length; j++) {
s.add(input[i]);
}
根据要求,为较小的阵列提供一个工作小提琴:
biger_数组=[['a'、'b'、'c']、['a'、'b'、'c']]
变量输入=[…更大的数组[1]];
var s=新集合();
对于(var j=0;j //等等代码>控制台可能会捉弄你。它有自己的表示数据的方法,这与JavaScripttoString
方法不同。它可以剪辑数据,甚至根本不显示数据。其他时候,它会延迟输出,这也会导致误导性输出
要确认您的设置是否正常,请输出其大小:
console.log(s.size);
或者,您可以将其转换回数组:
console.log([...s]);
显然,一些JS引擎无法正确设置console.log()
或映射
对象,相反,您只会收到一个空的对象,如{}
。不要上当受骗。我相信这是关于Set构造函数的toString()
方法的。更多信息如下。如果根据当前会话,您有一个很大的数组,则Spread operator将失败。请勿将排列与长度大于150K的阵列一起使用。。在第二段代码中,您应该说s.add(input[j])代码>虽然。你能提供一个小提琴显示你的问题吗?相同的代码是否在较小的阵列上进行过测试?@Redu感谢您的提醒。我使用它只是希望它可能与数组的引用有关(从而创建一个新的数组)。var input=biger_array[1];var s=新设置(输入)代码>您在控制台上尝试此操作,并查看设置是否已设置。只是一些JS引擎不会console.log()
Set(甚至Map
)对象。我猜这是由于构造函数的toString()
方法或其他原因造成的。不久前我使用了.Outputs.size
,以确保您不会被控制台行为误导。
console.log([...s]);