Javascript设置不从大字符串数组填充

时间:2017-01-04 20:27:10

标签: javascript set

我有一个来自~6k字符串元素的大字符串数组。我知道在我的浏览器中设置工作,并且在小型阵列上测试时很好。当我尝试将大型数组转换为新的Set时,它所做的就是返回一个空数组。

我的数组最初是嵌套数组的一部分,尽管尝试了几种将它输入到集合中的方法。其中一些是:

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]);
}

一切都无济于事:

set {}

根据要求为小型阵列提供工作小提琴:

Bigger_array=[['a','b','c'],['a','b','c']]


var input = [...Bigger_array[1]];
var s = new Set();
for (var j = 0; j < input.length; j++) {
     s.add(input[j]);
}
console.log(s);


///the original method 
var input =Bigger_array[1]
var s = new Set(input);
console.log(s);

alert('viewing s in console presents correct values of set \n fiddle is being weird' )
//etc... 

2 个答案:

答案 0 :(得分:1)

控制台可以玩弄你。它有自己的表示数据的方法,这与JavaScript toString方法不同。它可以剪辑数据,甚至根本不显示数据。其他时候它会延迟输出,这也会导致误导输出。

要确认您的set没问题,请输出其大小:

console.log(s.size);

或者,您可以将其转换回数组:

console.log([...s]);

答案 1 :(得分:1)

显然,某些JS引擎无法正确console.log() SetMap对象,而只是收到一个空的对象,如{}。不要被欺骗。我相信它与Set构造函数的toString()方法有关。更多信息是here