【发布时间】:2018-07-31 14:09:21
【问题描述】:
我想在 Set 中添加一些数组(仅它们的内容)。喜欢:
我的数组:
var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33];
我希望我的 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);
它添加三个数组而不是单个数字。
所以,我也尝试过这样做:JSFiddle
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);
但是,它只将数组的第一个元素添加到 Set 中。
- 我的问题是在我的第二种方法中,为什么只有数组的第一个元素被添加到 Set 中?
- 如何将数组的所有元素添加到集合中而不遍历每个数组元素并将它们添加到 Set(如使用
for,map或forEach)? (如果可能的话)
注意:在我的实际问题中,我确实不会一次获取所有数组。
【问题讨论】:
-
var set = new Set(arr1.concat(arr2, [8, 5]))怎么样? Updated fiddle -
var set = new Set([...arr1, ...arr2, 8, 5]);或var set = new Set([...arr1, ...arr2, ...[8, 5]]);如果您想明确定义 3 个数组 -
@JaromandaX 在我的实际问题中,我确实不会一次获取所有数组。
-
问题不清楚:p
-
或...一些猴子修补坏处...
Set.prototype.addMulti = function(...args) { [...args].forEach(x => this.add(x));};...然后使用set.addMulti(...arr1)
标签: javascript arrays ecmascript-6 set destructuring