Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как передать в массив перемеенную как ключ массива? (https://javascript.ru/forum/misc/72137-kak-peredat-v-massiv-peremeennuyu-kak-klyuch-massiva.html)

фдуч 11.01.2018 11:41

Как передать в массив перемеенную как ключ массива?
 
Подскажите пожалуйста как подставить в массив значение переменной как ключ массива

есть переменная
var type = value1
есть массив
var custom = {
   key: {
	  label: test
	}
};

как type подставить на место key?

Aetae 11.01.2018 12:00

custom[type].label

фдуч 11.01.2018 12:19

мне нужно чтобы вот так было, такая конструкция будет работать?
var custom = {
    custom[type]: {
      label: test
    }
};

пробую, что-то не работает...

Dilettante_Pro 11.01.2018 13:12

К сожалению, здесь не запускается...
var custom = {
   key: {
	  label: "test"
	}
};
var  type = 33;

function getVal(val) {
    for(var name in window) {
        if(window[name]==val) {
            return name;
        }
    }
}

custom = JSON.parse('{"' + getVal(type) + '":' + JSON.stringify(custom.key) + '}');
alert(JSON.stringify(custom));

ksa 11.01.2018 14:26

Цитата:

Сообщение от фдуч (Сообщение 474766)
есть переменная
var type = value1

есть массив
var custom = {
   key: {
	  label: test
	}
};

как type подставить на место key?

Например так...

var custom = {};
var type = 'value1';
custom[type]={
	label: 'test'
}
alert(JSON.stringify(custom));

ksa 11.01.2018 14:26

Цитата:

Сообщение от фдуч
есть массив
var custom = {...};

Это не массив... :no:

ksa 11.01.2018 14:28

Цитата:

Сообщение от фдуч (Сообщение 474773)
такая конструкция будет работать?
var custom = {
    custom[type]: {
      label: test
    }
};

пробую, что-то не работает...

Это просто галиматья. Она разумеется не станет работать... :no:

Dilettante_Pro 11.01.2018 15:35

ksa,
{"value1":{"label":"test"}} - это не совсем тот результат,
просили {"type":{"label":"test"}}

где type - не просто так, а имя переменной.

ksa 11.01.2018 15:37

Цитата:

Сообщение от Dilettante_Pro
просили {"type":{"label":"test"}}

Что он "просил", я так и не понял... :cray:

ksa 11.01.2018 15:40

Цитата:

Сообщение от Dilettante_Pro
просили {"type":{"label":"test"}}

Дык!

var custom = {};
var type = 'type';
custom[type]={
	label: 'test'
}
alert(JSON.stringify(custom));

Aetae 11.01.2018 15:51

Ну и пафосный es6:
var type = 'type';
var custom = {
    [type]:{
        label: 'test'
    }
};
alert(JSON.stringify(custom));

Dilettante_Pro 11.01.2018 15:53

ksa,
Ну в этом случае это только имитация результата по значению переменной, а не по имени - с таким же успехом можно было бы и просто написать
var custom = {
   key: {
	  label: "test"
	}
};

custom = {
   type: {
	  label: "test"
	}
};
alert(JSON.stringify(custom));

ksa 11.01.2018 16:17

Цитата:

Сообщение от Dilettante_Pro
в этом случае это только имитация результата

Так по "объяснению" ТСа вообще не понятно, что у него в "дано" и, что в итоге "нужно".

Вариантов ему показали валом! :D

Dilettante_Pro 11.01.2018 16:21

Конечно, это какие-то непонятные танцы с бубном с невнятной целью, так что вся моя предыдущая критика весьма сомнительна:-E
Возможно, наиболее корректный - в данной ситуации - вариант замены ключа с сохранением значения
var custom = {
   key: {
	  label: "test"
	}
};

custom = JSON.parse('{"type":' + JSON.stringify(custom.key) + '}');

alert(JSON.stringify(custom));

Aetae 11.01.2018 20:15

Да, кажись дошло, что он хотел:) :
var type = "value1";
var custom = {
  key: {
    label: "test"
  }
};
custom[type] = custom.key;
delete custom.key;

alert(JSON.stringify(custom,0,'\t'));

рони 11.01.2018 21:21

Aetae,
:victory:


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