добавить элемент в объект. 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 Чего не догоняю тут? Как сделать правильно? Заранее благодарю. |
Object..defineProperty работает совсем не так. И вообще, мне кажется, что достаточно сделать так:
var a1 = { param1: "value1", param2: "value2", param3: { subparam1: "vol1", subparam2: "vol2" } }; alert(a1.param3.subparam1); |
Цитата:
array ( 'param1' => 'volume1', 'param2' => 'volume2', 'param3' => array( 'subparam1' => 'vol1', 'subparam2' => 'vol2' ); ); Как сделать на js пока не знаю |
mrmammoth,
var a1 = { param1: "value1", param2: "value2" }; a1["param3"] = { 'subparam1': "vol1", 'subparam2': "vol2" }; alert(a1.param3.subparam1); |
спасибо
...но так добавляется только 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,
что вы хотите получить и из чего ? ато я вас непонимаю |
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"]); |
mrmammoth,
var a1 = { param1: "value1", param2: "value2" }; a1["param3"] = { 'subparam1': "vol1", 'subparam2': "vol2" }; a1["param3"]['subparam3']= "vol3" alert(a1.param3.subparam3); |
Задача у меня такая:
Вот исходный массив 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,
передавай элемент на сервер и там добавляй не зачем впустую гонять ненужные данные |
Часовой пояс GMT +3, время: 04:21. |