Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обращение к элементу по имени из переменной (https://javascript.ru/forum/events/52410-obrashhenie-k-ehlementu-po-imeni-iz-peremennojj.html)

unrecovered 18.12.2014 02:42

Обращение к элементу по имени из переменной
 
Приветствую. Не сумел нагуглить(вполне возможно - ниасилил сформулировать) ответ на этот вопрос.

Итак.
Есть у нас некий кастомный объект, созданный функцией:

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 не подходит по причине того, что порядок и количество свойств в будущем может поменяццо...)

krasovsky 18.12.2014 07:07

это что какая то задача не несущая в себе практического смысла?
Используй forEach\while

krutoy 18.12.2014 11:28

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

krasovsky 18.12.2014 11:48

krutoy,
Жаль только, что если вдруг названия полей не совпадают с массивом цикл упадет с ошибкой, и то что автор планирует делать перебор полей а не массива )

krutoy 18.12.2014 12:27

Цитата:

Сообщение от krasovsky
Жаль только, что если вдруг названия полей не совпадают с массивом цикл упадет с ошибкой,

Жаль только, что ваша Экспертная оценка не имет ничего общего с реальностью
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

Цитата:

Сообщение от krasovsky
автор планирует делать перебор полей а не массива )

тогда несколько вопросов
1) почему нельзя делать перебор полей итерацией массива?
2) как Вы собирались
Цитата:

Сообщение от krasovsky
делать перебор полей а не массива )

Используя вот это
Цитата:

Сообщение от krasovsky
Используй forEach\while


unrecovered 18.12.2014 12:52

2krutoy
квадратные скобки позволяют брать имя из элемента! точняк, спасибо! :)

krutoy 18.12.2014 13:52

krasovsky,
Могу посоветовать хорошего проктолога.

unrecovered 18.12.2014 16:10

Цитата:

Сообщение от krutoy (Сообщение 347066)
krasovsky,
Могу посоветовать хорошего проктолога.

зачем проктолог ему? баттхёрт-то у вас же
и кстати от вас я кроме кидания понтами ничего не видел

krutoy 18.12.2014 16:22

krasovsky,
Я извиняюсь за резкость, я думал это ты там отписался по поводу батхерта. Этот мир полон олигофрении:)

krasovsky 18.12.2014 16:45

Цитата:

Сообщение от krutoy
Этот мир полон олигофрении

Истинная правда!
Цитата:

Сообщение от krutoy
я думал это ты там отписался по поводу батхерта

Именно я.
А плюсанул именно господин unrecovered. Зачетно ты его отблагодарил.

krutoy 18.12.2014 17:05

Цитата:

Сообщение от krasovsky
Зачетно ты его отблагодарил.

А в чем тогда смысл его последующего поста?

И кстати, в чем мой батхерт, если твоя отписка есть ни что иное, как проявление батхерта в терминальной стадии? Ведь я ткнул тебя в твое говно по самые уши, неужели попа не заболела? Думаю, таки, заболела, иначе того молчаливо-непонятного минуска бы не было, логично же.

krasovsky 18.12.2014 17:34

krutoy,
Ты — настоящий принц. Ты джентльмен и ученый, дитя мое!

unrecovered 19.12.2014 11:08

Цитата:

Сообщение от krutoy (Сообщение 347097)
А в чем тогда смысл его последующего поста?

И кстати, в чем мой батхерт, если твоя отписка есть ни что иное, как проявление батхерта в терминальной стадии? Ведь я ткнул тебя в твое говно по самые уши, неужели попа не заболела? Думаю, таки, заболела, иначе того молчаливо-непонятного минуска бы не было, логично же.

блеать, я думал что про проктолога это от него сообщение =\ извиняюсь

krutoy 19.12.2014 16:06

unrecovered,
Ничо, бывает:)


Часовой пояс GMT +3, время: 15:42.