Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450

Как передать свойство другому свойству внутри объекта?

30.10.2018, 15:22. Показов 1308. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой вопрос, как передать свойство другому свойству внутри объекта?
JavaScript
1
2
3
4
5
6
'Тканевые':{Name:'vert',
            width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),             
            height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
            clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
            },
'Пластиковые':'vert'
т.е. свойству "Пластиковые" передать все значения "Тканевые"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2018, 15:22
Ответы с готовыми решениями:

Передать свойство объекта в свойство объекта в объекте что в массиве
var array = ; function func(a, b, c) { array = {}; array.a = {}; // вместо "a" - аргумент array.a.b = text3; // и здесь. } ...

Как передать ссылку на свойство объекта?
var obj = {Samsung: 0, LG: 0, Sony: 0, BBK: 0} function ChangeProperty (a){ if (a == 0) {a = 1} else if (a == 1) {a = 2} ...

Как правильно написать функцию внутри класса и передать свойство?
Почему внутри класса Date в функции year() я не могу вызвать функцию year() объекта класса Year? Так: Year Date::year() { return...

18
249 / 162 / 68
Регистрация: 10.12.2017
Сообщений: 558
30.10.2018, 16:22
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
<script>
  var obj = {
    'one': {
      print: () => {
        console.log('print')
      }
    }, 
    'two': {}
  }
  obj.two = obj.one
  obj.two.print()
</script>
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
30.10.2018, 16:41  [ТС]
Ну может с латиницей и пройдет, а с кирилицей ни фига.
0
249 / 162 / 68
Регистрация: 10.12.2017
Сообщений: 558
30.10.2018, 16:45
Да это кажется )
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
<script>
  var obj = {
    'one': {
      print: () => {
        console.log('print')
      }
    }, 
    'русскиеБуквы': {}
  }
  obj['русскиеБуквы'] = obj.one
  obj['русскиеБуквы'].print()
</script>
1
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
30.10.2018, 16:55  [ТС]
Что то не хочет
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var cartData = getCartData();
var getType = getZamer(cartData[dataId][3]);
                    
function getZamer (type) {//данные по изделию
    return {
        'Тканевые':{Name:'vert',
        width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),             
        height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
        clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
        },
        'Пластиковые':{}
            }[type];
        };  
 
getZamer['Пластиковые'] = getZamer['Тканевые'];
 
var dataCard ='';           
dataCard += "Ширина изделия: <b>"+ getType.width() +" см</b><br>";
dataCard += "Высота изделия: <b>"+ getType.height() +" см</b><br>";
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.10.2018, 17:00
Цитата Сообщение от Дмитрий Дмитрий Посмотреть сообщение
getZamer['Пластиковые'] = getZamer['Тканевые'];
так нельзя присваивать.
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
30.10.2018, 17:04  [ТС]
а как?
0
249 / 162 / 68
Регистрация: 10.12.2017
Сообщений: 558
30.10.2018, 17:21
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script>
  var cartData = getCartData();
 
  function getZamer() {//данные по изделию
    return {
      'Тканевые': {
        Name: 'vert',
        width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),
        height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
        clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
      },
      'Пластиковые': {}
    };
  };
 
  // начала вернем весь объект
  var getType = getZamer();
 
  // это не сработает, тк, возвращается только один объект
  // getZamer['Пластиковые'] = getZamer['Тканевые'];
 
  // "копируем" методы
  getType['Пластиковые'] = getType['Тканевые']
 
  var dataCard = '';
  dataCard += "Ширина изделия: <b>" + getType['Пластиковые'].width() + " см</b><br>"; // вызов
  dataCard += "Высота изделия: <b>" + getType[cartData[dataId][3]].height() + " см</b><br>"; // другой вызов
</script>
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.10.2018, 17:35
Дмитрий Дмитрий, а в нормальном виде в cartData числа запрещено хранить?
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
30.10.2018, 17:48  [ТС]
Да нет, проста замену на запятые делаю.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
30.10.2018, 17:54
Дмитрий Дмитрий, если будете в массиве хранить нормальные числа, бесконечно не нужно будет заменять запятые.
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
30.10.2018, 17:54  [ТС]
Ошибка Cannot read property 'Тканевые' of undefined
К тому же разметку dataCard нельзя менять, свойств много.

Вот весь код, хотелось бы оптемезировать то что повторяется в свойствах
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
$(document).on('click', '.scheme', function(){
                    var dataId = $(this).data('id');
                    var cartData = getCartData();
                    var getType = getZamer(cartData[dataId][3]);
                    
                    function getZamer (type) {
                        return {
                            'Мини': {Name:'mini',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 4).toString().replace(".", ","),             
                                height: () => (+cartData[dataId][7].replace(",", ".") + 5).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Кассета':{Name:'kas',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 3.5).toString().replace(".", ","),               
                                height: () => (+cartData[dataId][7].replace(",", ".") - 3).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") - 1).toString().replace(".", ",")
                            },
                            'Кассета+':{Name:'kas+',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 1.5).toString().replace(".", ","),               
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") - 1).toString().replace(".", ",")
                            },
                            'Стандарт':{Name:'st',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 3.5).toString().replace(".", ","),               
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Мини-Зебра':{Name:'mz',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 4).toString().replace(".", ","),             
                                height: () => (+cartData[dataId][7].replace(",", ".") + 5).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Кассета-Зебра':{Name:'kz',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 1.5).toString().replace(".", ","),               
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") - 1).toString().replace(".", ",")
                            },
                            'Стандарт-Зебра':{Name:'sz',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 3.5).toString().replace(".", ","),               
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Тканевые':{Name:'vert',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),             
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Пластиковые':{Name:'vert',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),             
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Горизонтальные-Стандарт':{Name:'gs',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),             
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Горизонтальные с цепочкой':{Name:'gs',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),             
                                height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
                            },
                            'Venus':{Name:'venus',
                                width: () => (+cartData[dataId][6].replace(",", ".") + 6).toString().replace(".", ","),             
                                height: () => (+cartData[dataId][7].replace(",", ".") + 2).toString().replace(".", ","),
                                clothWidth: () => (+cartData[dataId][6].replace(",", ".") - 42).toString().replace(".", ","),
                                beadDepth: 
                            }
                        }[type];
                    };  
                    
                    $('.imgProduct').html('<img src="/imagesbd/zamer-'+ getType.Name +'.jpg">');
                    
                    var dataCard ='';           
                    dataCard += "Тип изделия: <b>"+ cartData[dataId][3] +"</b><br>";
                    dataCard += "Материал: <b>"+ cartData[dataId][0].replace("<br>","") +"</b><br>";
                    dataCard += "Замер по ширине: <b>"+ cartData[dataId][6].toString().replace(".", ",") +" см</b><br>";
                    dataCard += "Замер по высоте: <b>"+ cartData[dataId][7].toString().replace(".", ",") +" см</b><br>";
                    dataCard += "Ширина изделия: <b>"+ getType.width() +" см</b><br>";
                    dataCard += "Высота изделия: <b>"+ getType.height() +" см</b><br>";
                    dataCard += "Ширина ткани: <b>"+ getType.clothWidth() +" см</b><br>";
                    dataCard += "Высота управления: <b>"+ getType.height() +" см</b><br>";
                    dataCard += "Цвет комплектации: <b>Белый</b>";
                    
                    $('.dataProduct').html(dataCard);
                    delete cartData[dataId], getZamer();
                    
                });
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
02.11.2018, 09:08  [ТС]
Почему копирование не работает
JavaScript
1
2
3
4
5
6
'Тканевые':{Name:'vert',
            width: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ","),             
            height: () => (+cartData[dataId][7].replace(",", ".") + 0).toString().replace(".", ","),
            clothWidth: () => (+cartData[dataId][6].replace(",", ".") + 0).toString().replace(".", ",")
            },
'Пластиковые':Object.assign({}, ['Тканевые'])
Добавлено через 9 минут
Почему undefined в консоле
JavaScript
1
console.log(getType['Тканевые']);
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
04.11.2018, 07:57  [ТС]
Ребят ну подскажите что к чему.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.11.2018, 08:28
Дмитрий Дмитрий, подсказываю. Вам нужно провести рефакторинг JavaScript-кода с нуля.
Показывайте ваш JSON с изделиями и конечную цель.
Числа должны храниться в массиве в виде числа, а не в виде строки.

Пока матрешки из бесконечно вложенных объектов выглядят бредом.
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
04.11.2018, 08:36  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
Числа должны храниться в массиве в виде числа, а не в виде строки.
Это вы про ['Тканевые']?
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.11.2018, 08:52
Я про числа. И про матрешки из вложенных объектов.
Всё можно сделать проще.
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
04.11.2018, 15:46  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
Числа должны храниться в массиве в виде числа, а не в виде строки.
Ну это не проблема, только мою задачу это не решит. Дело в том как хранить числа-в виде числа или строки.
Цитата Сообщение от amr-now Посмотреть сообщение
Пока матрешки из бесконечно вложенных объектов выглядят бредом.
Какие предложения?
0
 Аватар для Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 450
05.11.2018, 12:53  [ТС]
Сделал так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function getZamer (type) {//данные по изделию
                
                let hh = (n,w,h,c) => {
                return {Name:n,
                        width: () => (+cartData[dataId][6].replace(",", ".") + w).toString().replace(".", ","),             
                        height: () => (+cartData[dataId][7].replace(",", ".") + h).toString().replace(".", ","),
                        clothWidth: () => (+cartData[dataId][6].replace(",", ".") + c).toString().replace(".", ",")
                       }
                         };
                                     
                    return {
                        'Мини': hh('mini', 4, 5, 0),
                        'Кассета': hh('kas', 3.5, 3, 1),
                        'Кассета+': hh('kas+', 1.5, 0, 1),
                        'Стандарт': hh('st', 3.5, 0, 0),
                        'Мини-Зебра': hh('mz', 4, 5, 0),
                        'Кассета-Зебра': hh('kz', 1.5, 0, -1),
                        'Стандарт-Зебра': hh('sz', 3.5, 0, 0),
                        'Тканевые': hh('vert', 0, 0, 0),
                        'Пластиковые': hh('vert', 0, 0, 0),
                        'Горизонтальные-Стандарт': hh('gs', 0, 0, 0),
                        'Горизонтальные с цепочкой': hh('gs', 0, 0, 0),
                        'Venus': hh('venus', 6, 2, 0)
                    }[type];
                };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2018, 12:53
Помогаю со студенческими работами здесь

Необходимо передать координаты одного объекта другому
У меня есть два класса class1 и class2. Объект class1 a перемещается по сцене. Так вот, мне надо передать координаты x и y в class2 b. При...

В таймер передать функцию внутри объекта
var getMessageObj = { flag: true, mess_id: 0, getMessages: function(){ if(this.flag){ $.ajax({ type:...

Как обратится к свойству объекта
Интересует следующий вопрос! В справочнике Номенклатура выбираем любой элемент, у этого элемента, если есть, выбираем характеристику....

Как с jquery зацепиться к элементам внутри iframe и убить подключение к другому jquery внутри него?
$(document).ready(function() { $('#mainFrame').ready(function() { ...

Как обратиться к свойству объекта в массиве?
у меня есть массив объектов object obj = new object; product audi = new product(45000, &quot;Audi A6&quot;, &quot;Germany&quot;); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru