22.03.2014, 20:20
|
Интересующийся
|
|
Регистрация: 19.03.2014
Сообщений: 22
|
|
добавить элемент в объект. defineProperty
Здравствуйте
Есть, к примеру, такой код:
<script type='text/javascript'>
a1 = {
param1: "value1",
param2: "value2",
param3: new Object()
};
Object.defineProperty(a1, "param3", {
subparam1: "vol1",
subparam2: "vol2"
});
alert(a1.param3.subparam1);
</script>
undefined
Чего не догоняю тут? Как сделать правильно?
Заранее благодарю.
|
|
22.03.2014, 20:45
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Object..defineProperty работает совсем не так. И вообще, мне кажется, что достаточно сделать так:
var a1 = {
param1: "value1",
param2: "value2",
param3: {
subparam1: "vol1",
subparam2: "vol2"
}
};
alert(a1.param3.subparam1);
|
|
22.03.2014, 21:01
|
Интересующийся
|
|
Регистрация: 19.03.2014
Сообщений: 22
|
|
Сообщение от Sweet
|
Object..defineProperty работает совсем не так. И вообще, мне кажется, что достаточно сделать так:
var a1 = {
param1: "value1",
param2: "value2",
param3: {
subparam1: "vol1",
subparam2: "vol2"
}
};
alert(a1.param3.subparam1);
|
так работает. Но мне в конечном итоге надо получить аналог php. и добавлять элементы к массиву param3
array (
'param1' => 'volume1',
'param2' => 'volume2',
'param3' =>
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
);
);
Как сделать на js пока не знаю
|
|
22.03.2014, 21:21
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
mrmammoth,
var a1 = {
param1: "value1",
param2: "value2"
};
a1["param3"] = {
'subparam1': "vol1",
'subparam2': "vol2"
};
alert(a1.param3.subparam1);
|
|
22.03.2014, 22:51
|
Интересующийся
|
|
Регистрация: 19.03.2014
Сообщений: 22
|
|
спасибо
...но так добавляется только 1 элемент. если пытаться сделать так ещё раз, то новые значения a1["param3"] просто заменяют старые. Как добавить элемент?
array (
'param1' => 'volume1',
'param2' => 'volume2',
'param3' =>
array(
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
),
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
),
// .........................................................//
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
)
);
);
как-то так по аналогии
Последний раз редактировалось mrmammoth, 22.03.2014 в 23:35.
|
|
23.03.2014, 00:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
mrmammoth,
что вы хотите получить и из чего ? ато я вас непонимаю
|
|
23.03.2014, 00:23
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
mrmammoth,
var a1 = {
param1: "value1",
param2: "value2",
param3:[]
};
a1["param3"].push({
"subparam1": "vol1",
"subparam2": "vol2"
} );
a1["param3"].push({
"subparam1": "vol3",
"subparam2": "vol4"
} )
alert(a1.param3[1]["subparam1"]);
|
|
23.03.2014, 00:28
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
mrmammoth,
var a1 = {
param1: "value1",
param2: "value2"
};
a1["param3"] = {
'subparam1': "vol1",
'subparam2': "vol2"
};
a1["param3"]['subparam3']= "vol3"
alert(a1.param3.subparam3);
|
|
23.03.2014, 01:08
|
Интересующийся
|
|
Регистрация: 19.03.2014
Сообщений: 22
|
|
Задача у меня такая:
Вот исходный массив php
$str = json_encode(
array(
array (
'param1' => 'volume1',
'param2' => 'volume2',
'param3' =>
array(
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
),
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
)
)
),
array (
'param1' => 'volume1',
'param2' => 'volume2',
'param3' =>
array(
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
),
array(
'subparam1' => 'vol1',
'subparam2' => 'vol2'
)
)
)
));
$str я передаю в js
Нужно, чтобы функция doAdd добавила элемент в массив param3 и вернула весь массив в php
function doAdd(str) {
arr = JSON.parse(str);
i=0; /* пусть в 1-й элемент */
/* даёт ошибку элемент не поддерживает push*/
arr[i]['param3'].push({
subparam1: 'vol1',
subparam2: 'vol2'
});
return JSON.stringify(arr);
}
как-то так
Последний раз редактировалось mrmammoth, 23.03.2014 в 01:15.
|
|
23.03.2014, 01:21
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
mrmammoth,
передавай элемент на сервер и там добавляй
не зачем впустую гонять ненужные данные
|
|
|
|