gpt4 book ai didi

javascript - 将 Array(destructured) 添加到 Set 中的功能方法是什么

转载 作者:行者123 更新时间:2023-11-30 07:20:25 25 4
gpt4 key购买 nike

我想在 Set 中添加一些数组(仅包含它们的内容)。喜欢:

我的数组:

var arr1 = [55, 44, 65];
var arr2 = [22, 11, 33];

我希望我的集合是:[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(就像使用for , map 还是 forEach)? (如果可能的话)

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

最佳答案

如评论所述,你可以试试

var set = new Set(arr1.concat(arr2, [8, 5]))

可以测试一下here .


However, It only adds the first elements of the array into Set.

如果您引用 docs ,它说,.add 只接受 1 个参数。因此,当您执行 ...[8, 5] 时,它会传播并添加第一个值并忽略剩余值。


In my actual problem I do not get all the arrays at once.

在这里,您可以将集合转换回数组并创建新集合:

var set2 = new Set(Array.from(set).concat([8, 5]))

可以查一下here


您还可以使用扩展运算符,例如:

var set2 = new Set([...set].concat([8, 5]))

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

关于javascript - 将 Array(destructured) 添加到 Set 中的功能方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48898383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com