Как получить доступ к объекту без ключей, только значения JavaScript - PullRequest
0 голосов
/ 03 января 2019
var hasDuplicates = "eyes";
var noDuplicates = new Set(hasDuplicates); // {"e", "y", "s"}


console.log(Object.keys(noDuplicates));   // []
console.log(Object.values(noDuplicates)); // []

Я в основном хочу получить доступ к 'e', ​​'y' и 's' набора, называемого noDuplicates.

var setToArray = [];
for (spot in noDuplicates) {
    setToArray.push(Object.keys(noDuplicates)[spot])
}

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Вы можете использовать синтаксис расширения массива для преобразования набора в массив:

var hasDuplicates = "eyes";
var noDuplicates = new Set(hasDuplicates); // {"e", "y", "s"}
var setToArray = [...noDuplicates];

console.log(setToArray);

Вы также можете использовать Set.forEach() или для ... цикла для прямого доступа к значениям набора:

var hasDuplicates = "eyes";
var noDuplicates = new Set(hasDuplicates); // {"e", "y", "s"}

noDuplicates.forEach(v => console.log(v));

for(const v of noDuplicates) {
  console.log(v);
}
0 голосов
/ 03 января 2019

Вы также можете использовать метод Array.from () для преобразования между множеством и массивом:

var hasDuplicates = "eyes";
var noDuplicates = new Set(hasDuplicates);

var setToArray = Array.from(noDuplicates);
console.log(setToArray);
0 голосов
/ 03 января 2019

noDuplicates - это Набор, который предоставляет итератор. Просто используйте for...of или оператор распространения [... noDuplicates] вместо for...in. А еще лучше, преобразуйте ваш набор в массив напрямую с помощью Array.from:

let setToArray = Array.from(new Set([1, 1, 1, 2, 2]));
console.log(setToArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...