2016-09-04 7 views
0

Javascript имеет Array.prototype.map, но, похоже, для наборов не существует эквивалента. Каков рекомендуемый способ запуска карты в наборе в Javascript?Как вы запускаете карту на Javascript Set?

EDIT: Добавление пример по запросу

users = new Set([1,2,3]) 

// throws an error: 
// Uncaugh TypeError: users.map is not a function 
users.map(n => n*n) 
+1

добавьте пример, чтобы выделить свой вопрос. –

+0

см. Также http://stackoverflow.com/q/31084619/1048572 или http://stackoverflow.com/q/31232415/1048572 – Bergi

+0

Что бы вы хотели сделать с результатом вычисления? новый массив, новый ['Set'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)? новую ['Карта'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)? –

ответ

0

Вы можете использовать

Spread-Operator

Синтаксис распространения позволяет выражение раскладывается в тех местах, где несколько аргументов (для ожидаются вызовы функций) или несколько элементов (для литералов массива) или нескольких переменных (для назначения деструктуризации).

на ваш набор, чтобы нанести на карту Set.

const s = new Set([1,2,3,4]); 
 

 
const a = [...s].map(n => n * 2) 
 

 
console.log(a)

+0

Вы должны обернуть свое выражение в конструкторе 'Set', потому что отображение' Set' должно возвращать 'Set'. Проблема возникает с повторяющимися значениями возврата: 'new Set (Array.from (s) .map (n => n% 2))' дает 'Set {1, 0}' - но отображение не должно преобразовывать структуру набор. – ftor