Обращение к элементу по имени из переменной
Приветствую. Не сумел нагуглить(вполне возможно - ниасилил сформулировать) ответ на этот вопрос.
Итак. Есть у нас некий кастомный объект, созданный функцией: function myclass(a,b,c,d) { this.a = a; this.b = b; this.c = c; this.d = d; } example = new myclass(1,2,3,4); и есть у меня, например, массив, который имена его полей содержит: const fieldnames = ["a","b","c","d"]; Как мне сделать перебор полей объекта в цикле, забирая названия полей из массива? (обычная конструкция for..in не подходит по причине того, что порядок и количество свойств в будущем может поменяццо...) |
это что какая то задача не несущая в себе практического смысла?
Используй forEach\while |
function myclass(a,b,c,d) { this.a = a; this.b = b; this.c = c; this.d = d; } example = new myclass(1,2,3,4); const fieldnames = ["a","b","c","d"]; fieldnames.forEach(function(el){console.log(example[el])}) // 1 // 2 // 3 // 4 PS вообще, вам любой цикл тут подойдет, в том числе и for in |
krutoy,
Жаль только, что если вдруг названия полей не совпадают с массивом цикл упадет с ошибкой, и то что автор планирует делать перебор полей а не массива ) |
Цитата:
function myclass(a,b,c,d) { this.a = a; this.foo = b; this.c = c; this.d = d; } example = new myclass(1,2,3,4); const fieldnames = ["a","b","c","d"]; fieldnames.forEach(function(el){console.log(example[el])}) // 1 // undefined // 3 // 4 Цитата:
1) почему нельзя делать перебор полей итерацией массива? 2) как Вы собирались Цитата:
Цитата:
|
2krutoy
квадратные скобки позволяют брать имя из элемента! точняк, спасибо! :) |
krasovsky,
Могу посоветовать хорошего проктолога. |
Цитата:
и кстати от вас я кроме кидания понтами ничего не видел |
krasovsky,
Я извиняюсь за резкость, я думал это ты там отписался по поводу батхерта. Этот мир полон олигофрении:) |
Цитата:
Цитата:
А плюсанул именно господин unrecovered. Зачетно ты его отблагодарил. |
Часовой пояс GMT +3, время: 22:28. |