#javascript
#javascript
Вопрос:
Интересно, можно ли использовать цикл для добавления динамически именованных объектов в массив, поэтому мне не нужно повторять «нажатие» на массив. Ткс !!
let _objA0 = { "name":"regionId", "value":"myRegion" };
let _objA1 = { "name":"vdcId", "value":"myId" };
let _objA2 ... _objA100
let test = []
test.push(_objA0)
test.push(_objA1)
...
test.push(_objA100)
Комментарии:
1. у вас есть 100 переменных объектов?
2. Если речь идет о том, чтобы не повторять
push
, вы можете простоlet test = [_objA0, _objA1, ..., _objA100];
задать реальный вопрос, хотя, почему вам нужно иметь эти динамически именованные объекты для начала.3. Пожалуйста, покажите нам, как создаются эти объекты.
4. Tks, у нас есть поток создания «на основе шаблона JSON», где JSON содержит десятки атрибутов продукта. Один из атрибутов содержит массив объектов с десятками конфигураций. Мне нужно заполнить массив моими «подготовленными объектами», и я хочу найти что-то приличное.
5. Я должен признать, что это неубедительный специальный дизайн в моей команде, и мне мало что нужно сделать, чтобы изменить дизайн с нуля…
Ответ №1:
Я думаю, сейчас самое время использовать eval
let test = [];
for(let i = 0; i <= 100; i ) {
test.push(eval(`_objA${i}`));
}
Комментарии:
1. Это когда-нибудь подходящее время для использования
eval
? Я имею в виду, это все забавы и игры, пока кто-то не вставит эксплойт XSS в один из ваших объектов… (Кстати, не мой downvote)2. @RobbyCornelissen Единственная динамическая переменная в этом eval —
i
из цикла, и она получает значение переменной, ничего не нужно вводить, что в данном случае относительно безопасно. Хотя использовать его не рекомендуется.3. это тоже весело и забавно, пока кто-то не решил, что запишет все переменные одну за другой, и решит преобразовать их в массив. лол, я думаю, сейчас не самое плохое время для использования eval. Я дам вам ап.
Ответ №2:
Вы можете получить доступ к переменным (с помощью ключевого слова var) с помощью объекта window , попробуйте это:
var _objA0 = { "name":"regionId", "value":"myRegion" };
var _objA1 = { "name":"vdcId", "value":"myId" };
let test = [];
for(let i = 0; i < 2; i ){
test.push(window['_objA' i]);
}
console.log(test)
Комментарии:
1. Что ж, если он может изменить значение
let
tovar
на этапе генерации, я бы предложил просто сгенерировать массив в первую очередь…2. Это также предполагает, что код выполняется в контексте браузера, что не обязательно является заданным.