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澄清了所有阵列在开始时都不存在。这使得建议的批准成为可能