Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在集合中添加数组(非结构化)的功能方法是什么_Javascript_Arrays_Ecmascript 6_Set_Destructuring - Fatal编程技术网

Javascript 在集合中添加数组(非结构化)的功能方法是什么

Javascript 在集合中添加数组(非结构化)的功能方法是什么,javascript,arrays,ecmascript-6,set,destructuring,Javascript,Arrays,Ecmascript 6,Set,Destructuring,我想在集合中添加一些数组(仅其内容)。比如: var arr1 = [55, 44, 65]; var arr2 = [22, 11, 33] var set = new Set(); set.add(arr1) set.add(arr2) set.add([8, 5]) console.log(set); 我的阵列: var arr1 = [55, 44, 65]; var arr2 = [22, 11, 33]; var arr1 =

我想在集合中添加一些数组(仅其内容)。比如:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
我的阵列:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33];
var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
我希望我的设置为:
[55、44、65、22、11、33]

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
我所尝试的:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
它在集合中添加三个数组,而不是单个数字

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
所以,我也试着这样做:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
但是,它只将数组的第一个元素添加到集合中

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
  • 我的问题是在我的第二种方法中,为什么在集合中只添加数组的第一个元素
  • 如何将数组的所有元素添加到集合中,而不迭代每个数组元素并将它们添加到集合中(如使用
    for
    map
    forEach
    )?(如果可能的话)

注意:在我的实际问题中,我并不是一次获取所有数组。

正如@Rajesh所说,我相信你可以将数组连接成一个数组,并从中创建一个集合

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set = new Set(arr1.concat(arr2.concat([8, 5])));
编辑:若要在以后添加另一个数组,您可以在添加每个数组时创建一个新的数组集,并将它们连接起来,如图所示

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
下面是一个完整的例子:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33];
var set = new Set(arr1.concat(arr2.concat([8, 5])));
var arr3 = [10, 20];
var newSet = new Set(arr3);
set = new Set(Array.from(set).concat(Array.from(newSet)));
set.forEach(function(element) {
  console.log(element);
});
产出:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
> 55
> 44
> 65
> 22
> 11
> 33
> 8
> 5
> 10
> 20

正如@Rajesh所说,我相信您可以将数组连接成一个数组,并从中创建一个集合

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set = new Set(arr1.concat(arr2.concat([8, 5])));
编辑:若要在以后添加另一个数组,您可以在添加每个数组时创建一个新的数组集,并将它们连接起来,如图所示

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
下面是一个完整的例子:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33];
var set = new Set(arr1.concat(arr2.concat([8, 5])));
var arr3 = [10, 20];
var newSet = new Set(arr3);
set = new Set(Array.from(set).concat(Array.from(newSet)));
set.forEach(function(element) {
  console.log(element);
});
产出:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
> 55
> 44
> 65
> 22
> 11
> 33
> 8
> 5
> 10
> 20

如前所述,您可以尝试

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set=新集合(arr1.concat(arr2[8,5]))

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
你可以测试一下

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

但是,它只将数组的第一个元素添加到集合中

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
如果您引用,它会说,
.add
只接受一个参数。因此,当您执行
…[8,5]
时,它会扩散并添加第一个值,而忽略剩余的值

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

在我的实际问题中,我并不是一次得到所有的数组

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
在此,您可以将集合转换回数组并创建新集合:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set2 = new Set(Array.from(set).concat([8, 5]))
你可以查一下

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

也可以使用扩展运算符,如:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set2 = new Set([...set].concat([8, 5]))

为了测试它,但作为个人偏好,我更喜欢
Array.from
,因为它更具可读性。您可以选择任何您喜欢的方式。

如评论所述,您可以尝试

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set=新集合(arr1.concat(arr2[8,5]))

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
你可以测试一下

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

但是,它只将数组的第一个元素添加到集合中

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
如果您引用,它会说,
.add
只接受一个参数。因此,当您执行
…[8,5]
时,它会扩散并添加第一个值,而忽略剩余的值

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

在我的实际问题中,我并不是一次得到所有的数组

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
在此,您可以将集合转换回数组并创建新集合:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set2 = new Set(Array.from(set).concat([8, 5]))
你可以查一下

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          

也可以使用扩展运算符,如:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var set2 = new Set([...set].concat([8, 5]))

为了测试它,但作为个人偏好,我更喜欢
Array.from
,因为它更具可读性。您可以选择任何您喜欢的方式。

如果您不想创建新的集合,循环没有任何问题:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var arr1=[55,44,65];
var arr2=[22,11,33]
变量集=新集();
var setAdd=set.add.bind(set);
arr1.forEach(setAdd);
arr2.forEach(setAdd);
[8,5].forEach(setAdd);
console.log(Array.from(set));//StackOverflow代码段控制台尚无法打印集合

//[55、44、65、22、11、33、8、5]
如果您不想创建一个新的集合,循环没有什么错:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33]
var set = new Set();
set.add(arr1)
set.add(arr2)
set.add([8, 5])
console.log(set);                          
var arr1=[55,44,65];
var arr2=[22,11,33]
变量集=新集();
var setAdd=set.add.bind(set);
arr1.forEach(setAdd);
arr2.forEach(setAdd);
[8,5].forEach(setAdd);
console.log(Array.from(set));//StackOverflow代码段控制台尚无法打印集合

//[55,44,65,22,11,33,8,5]
如何
var set=newset(arr1.concat(arr2,8,5])
<代码>变量集=新集([…arr1,…arr2,8,5])
var集=新集([…arr1,…arr2,…[8,5]])如果要明确定义3arrays@JaromandaX在我的实际问题中,我并不是一次得到所有的数组。。。一些猴子修补坏
Set.prototype.addMulti=function(…args){[…args].forEach(x=>this.add(x));}。。。然后使用
set.addMulti(…arr1)
var set=newset(arr1.concat(arr2[8,5])怎么样<代码>变量集=新集([…arr1,…arr2,8,5])
var集=新集([…arr1,…arr2,…[8,5]])如果要明确定义3arrays@JaromandaX在我的实际问题中,我并不是一次得到所有的数组。。。一些猴子修补坏
Set.prototype.addMulti=function(…args){[…args].forEach(x=>this.add(x));}。。。然后使用
set.addMulti(…arr1)
在我的实际问题中,我并不是一次得到所有数组。@BlackBeard您可能会在添加每个数组时创建一个新的集合,并将它们连接起来,如图所示。@BlackBeard如果您最初没有得到所有数组,则无法立即从它们创建集合。如果您需要这样做,现在有办法在以后强制添加这些项目。@PorygonZRocks感谢您的赞扬,但正如您可能已经读到的,这是一个部分答案。OP澄清了所有阵列在开始时都不存在。这使得建议的方法适合于评论,而不是answer@RajeshOP在我发帖的时候,或者至少在我开始写作的时候,还没有说明这一点。在我的实际问题中,我并没有一次得到所有数组。@BlackBeard你可以在添加每个数组时创建一个新的数组,如图所示,将它们连接起来。@BlackBeard如果最初没有获得所有数组,则无法立即从它们创建集合。如果您需要这样做,现在有办法在以后强制添加这些项目。@PorygonZRocks感谢您的赞扬,但正如您可能已经读到的,这是一个部分答案。OP澄清了所有阵列在开始时都不存在。这使得建议的批准成为可能