ES6中的Set
对象具有forEach
方法,就像Array
对象一样。有没有办法在使用Set
方法迭代forEach
对象时修改值?
例如:
// Array object in ES5 can be modified in iteration
var array = [1, 2, 3];
array.forEach(function(int, idx, a) {
a[idx] = int * int;
});
array; // => [1, 4, 9]
但是当迭代Set对象时,
// Set will not be updated
var set = new Set([1, 2, 3]);
set.forEach(function(val1, val2, s) {
val2 = val1 * val1;
})
set; // => [1, 2, 3]
有没有办法达到与Array
对象相同的效果?
答案 0 :(得分:5)
我可能会这样做
var set = new Set([1, 2, 3]);
set = new Set(Array.from(set, val => val * val));
只使用新值创建一个新集合,并替换旧值。在迭代它时改变集合是一个坏主意,似乎在你的用例中很容易避免。