Я хотел бы знать, как я могу создать цикл, который повторяется для каждого элемента перечисления, и при этом проверять, что я нахожусь в правильном перечислении (индексе)
for('for each or for in?') {
if (list.names === enum) {
console.info(enum)
}
}
enum = {
JAMES: 'James',
MARCO: 'Marco',
Jane: 'Jane'
}
Этот код является просто примером того, что я хотел бы сделать, повторить цикл для каждого типа перечисления, затем проверить, что я нахожусь в первом, втором и т. д., а затем распечатать текущее перечисление
for (const newNames in enum) {
console.info(newNames[enum])
}
Отвечает ли это на ваш вопрос? Получить счетчик/индекс циклов, используя синтаксис for…of в JavaScript
это немного помогло, если не получилось напечатать значение перечисления, в этом случае предположим, что если я нахожусь в перечислении JAMES, как мне получить доступ к значению «James»?
В JavaScript нет for each
, а for of
не работает с неитерируемыми объектами. Остается только один вариант…
@Bussola Это просто объект: enum[key]
Я понял, мой друг, я пытался сделать это, как в публикации, которую вы мне прислали, но возвращает неопределенное значение, я добавлю его в тело вопроса, чтобы вы могли увидеть, действительно ли я сделал это правильно.
у вас есть это задом наперед в вашем редактировании, это должно быть console.info(enum[newNames])
Вот краткий фрагмент, показывающий ваши варианты, но for...in — это все, что вам нужно.
const obj = {
JAMES: 'James',
MARCO: 'Marco',
Jane: 'Jane'
}
// for..in and access the value as normal - obj[key]
for (const key in obj) {
console.info(`key: ${key}, obj[key]: ${obj[key]}`);
}
// for...of return an iterable of the object using Object.entries()
for (let [key, value] of Object.entries(obj)) {
console.info(`key: ${key}, value: ${value}`);
}
// for...of turn the iterator into an array into an iterator and also get the indexes
for (let [i, [key, value]] of [...Object.entries(obj)].entries()) {
console.info(`i: ${i}, key: ${key}, value: ${value}`);
}
Я попробовал пример for in, но он возвращает только undefined
У вас был тест в обратном порядке, см. Мой комментарий к вашему вопросу.
Это ответ на ваш вопрос?
const people = {
linda: 'linda',
MARCO: 'joshua',
james: 'james',
joshua: 'joshua'
};
Object.entries(people).forEach(person => {
person[0] === person[1] && console.info(person);
});
выход:
Array [ "linda", "linda" ]
Array [ "james", "james" ]
Array [ "joshua", "joshua" ]
Вы также можете взглянуть на эту тему о фильтрации объектов.
Отвечает ли это на ваш вопрос? как получить имена записей перечисления